<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>mixed language programming Archives - NeuralLantern.com</title>
	<atom:link href="https://www.NeuralLantern.com/tag/mixed-language-programming/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.NeuralLantern.com/tag/mixed-language-programming/</link>
	<description></description>
	<lastBuildDate>Sun, 09 Nov 2025 01:47:42 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://www.NeuralLantern.com/wp-content/uploads/2025/04/cropped-2025-04-04-Lantern-03-32x32.png</url>
	<title>mixed language programming Archives - NeuralLantern.com</title>
	<link>https://www.NeuralLantern.com/tag/mixed-language-programming/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Mix C++, C, and Assembly into One Program &#8211; Hybrid Program Full Build Tutorial</title>
		<link>https://www.NeuralLantern.com/mix-c-c-and-assembly-into-one-program-hybrid-program-full-build-tutorial/</link>
					<comments>https://www.NeuralLantern.com/mix-c-c-and-assembly-into-one-program-hybrid-program-full-build-tutorial/#respond</comments>
		
		<dc:creator><![CDATA[mike]]></dc:creator>
		<pubDate>Sun, 09 Nov 2025 01:47:40 +0000</pubDate>
				<category><![CDATA[Assembly Language]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Videos]]></category>
		<category><![CDATA[assembly tutorial]]></category>
		<category><![CDATA[build system]]></category>
		<category><![CDATA[C and assembly]]></category>
		<category><![CDATA[C++ assembly interop]]></category>
		<category><![CDATA[c++ tutorial]]></category>
		<category><![CDATA[extern C]]></category>
		<category><![CDATA[hybrid programming]]></category>
		<category><![CDATA[linking object files]]></category>
		<category><![CDATA[low level programming]]></category>
		<category><![CDATA[Makefile tutorial]]></category>
		<category><![CDATA[mixed language programming]]></category>
		<category><![CDATA[name mangling]]></category>
		<category><![CDATA[object files]]></category>
		<category><![CDATA[systems programming]]></category>
		<category><![CDATA[x86-64 assembly]]></category>
		<guid isPermaLink="false">https://www.NeuralLantern.com/?p=248</guid>

					<description><![CDATA[<p>Learn to build a hybrid program mixing C++, C, and x86-64 assembly. Covers object files, linking, extern "C", name mangling, and a full Makefile. Run one executable with modules calling each other.</p>
<p>The post <a href="https://www.NeuralLantern.com/mix-c-c-and-assembly-into-one-program-hybrid-program-full-build-tutorial/">Mix C++, C, and Assembly into One Program &#8211; Hybrid Program Full Build Tutorial</a> appeared first on <a href="https://www.NeuralLantern.com">NeuralLantern.com</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="Mix C++, C, and Assembly into One Program - Hybrid Program Full Build Tutorial" width="1380" height="776" src="https://www.youtube.com/embed/Izu807v7NbU?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p class="wp-block-paragraph">Want to write a single program that uses C++ for high-level logic, C for portability, and assembly for speed? This video shows exactly how to do it.</p>



<p class="wp-block-paragraph">We build a complete hybrid program from scratch:</p>



<ul class="wp-block-list">
<li>driver.cpp &#8211; contains main(), prints intro, calls assembly</li>



<li>c.c &#8211; simple printf() function</li>



<li>cpp.cpp &#8211; C++ function (with extern &#8220;C&#8221; to disable name mangling)</li>



<li>hello.asm &#8211; assembly module that prints messages, calls C and C++ functions</li>
</ul>



<p class="wp-block-paragraph">You’ll see:</p>



<ul class="wp-block-list">
<li>Why hybrid programs matter</li>



<li>How source files → object files → final executable</li>



<li>The role of the driver and why main() lives once</li>



<li>Name mangling in C++ and how extern &#8220;C&#8221; fixes interop</li>



<li>Global / extern in assembly to expose and call functions</li>



<li>A clean Makefile that compiles each module separately</li>



<li>Live build and execution with output explained line-by-line</li>
</ul>



<p class="wp-block-paragraph">By the end you’ll know how to call across languages safely, pass basic args via registers, and structure projects for fast incremental builds.</p>



<p class="wp-block-paragraph">No prior assembly required &#8211; just basic C/C++ familiarity. Code is copy-paste ready.</p>



<p class="wp-block-paragraph">Timestamps in comments. Source files linked below.</p>



<p class="wp-block-paragraph">Like &amp; subscribe for more systems programming!</p>



<p class="wp-block-paragraph">What is a Hybrid Program 00:00:00<br>Why Use Hybrid Programs 00:00:21<br>Program Modules Overview 00:01:10<br>Compilation to Object Files 00:02:23<br>Makefile Introduction 00:04:26<br>Driver Module Setup 00:06:43<br>Name Mangling Explained 00:07:18<br>C++ Module with extern C 00:07:43<br>Driver Main Function 00:10:12<br>C Module Implementation 00:11:52<br>Assembly Module Setup 00:12:41<br>Assembly Data Section 00:13:03<br>Assembly Text Section 00:14:18<br>Global and External Functions 00:14:35<br>Assembly System Calls 00:16:20<br>Calling C from Assembly 00:18:58<br>Calling C++ from Assembly 00:20:32<br>Program Execution Flow 00:21:05<br>Running the Program 00:23:59<br>Passing Arguments Between Modules 00:26:23<br>Hybrid Program Summary 00:29:11</p>



<p class="wp-block-paragraph">Thanks for watching!</p>



<p class="wp-block-paragraph">Find us on other social media here:</p>



<ul class="wp-block-list">
<li>https://www.NeuralLantern.com/social</li>
</ul>



<p class="wp-block-paragraph">Please help support us!</p>



<ul class="wp-block-list">
<li>Subscribing + Sharing on Social Media</li>



<li>Leaving a comment or suggestion</li>



<li>Subscribing to our Blog</li>



<li>Watching the main &#8220;pinned&#8221; video of this channel for offers and extras</li>
</ul>



<p class="wp-block-paragraph">Hello there. Let&#8217;s talk about hybrid programs.</p>



<p class="wp-block-paragraph">What&#8217;s a hybrid program?</p>



<p class="wp-block-paragraph">A hybrid program is basically a program where you have multiple modules,</p>



<p class="wp-block-paragraph">many written in different languages, all compiled into one executable program.</p>



<p class="wp-block-paragraph">Why would you want to make a hybrid program? Well, you know,</p>



<p class="wp-block-paragraph">maybe you have C++ as one of the modules that you&#8217;re creating and C++ is a high</p>



<p class="wp-block-paragraph">And C++ is a high level language, so it makes it easier to write big, robust programs with GUIs and like big design, big fancy design patterns and things.</p>



<p class="wp-block-paragraph">But maybe at some point you want to interface with the C program.</p>



<p class="wp-block-paragraph">So it might make sense to, you know, kind of jump into some C code.</p>



<p class="wp-block-paragraph">Maybe also you want to write a little module in assembly because maybe one part of your code needs to be really, really fast and efficient in some way.</p>



<p class="wp-block-paragraph">the code compiles down to machine code.</p>



<p class="wp-block-paragraph">Assembly is just, you know, a level up from machine code.</p>



<p class="wp-block-paragraph">So let&#8217;s see, I&#8217;m just gonna write a quick program</p>



<p class="wp-block-paragraph">to demonstrate that you can do this</p>



<p class="wp-block-paragraph">and you can have these modules call each other.</p>



<p class="wp-block-paragraph">First off, I should probably draw a little bit</p>



<p class="wp-block-paragraph">about what I&#8217;m even talking about with multiple modules.</p>



<p class="wp-block-paragraph">So I&#8217;m gonna do my little annotator here</p>



<p class="wp-block-paragraph">and yeah, there we go.</p>



<p class="wp-block-paragraph">Basically imagine that you have a C++ module</p>



<p class="wp-block-paragraph">and we&#8217;ll call it the driver.</p>



<p class="wp-block-paragraph">and we&#8217;ll call it the driver and I&#8217;ll say like driver.cpp. Okay I think I&#8217;m</p>



<p class="wp-block-paragraph">drawing this backwards. I&#8217;m gonna draw this down here. Driver.cpp.</p>



<p class="wp-block-paragraph">Excuse my penmanship I don&#8217;t have a smoother setup on this thing. So we have</p>



<p class="wp-block-paragraph">driver.cpp that&#8217;s one source code. Maybe you have like another module, another</p>



<p class="wp-block-paragraph">just some C code. The driver, usually the way I like to refer to it, and one of my favorite,</p>



<p class="wp-block-paragraph">you know, assembly books refers to it is the driver is where the main function is so that</p>



<p class="wp-block-paragraph">it&#8217;s sort of like the entry point of your program. But then maybe we&#8217;ll have another module that has</p>



<p class="wp-block-paragraph">some other kind of CPP code in there. I&#8217;m just going to call this file cpp.cpp. And maybe we</p>



<p class="wp-block-paragraph">have another module that&#8217;s written in assembly. I&#8217;m going to call this hello.asm. Okay, so just</p>



<p class="wp-block-paragraph">Okay, so just several source code files.</p>



<p class="wp-block-paragraph">We will compile them each to an object file.</p>



<p class="wp-block-paragraph">Sometimes, I think, with new programmers,</p>



<p class="wp-block-paragraph">they think that you just compile a source code directly to the executable.</p>



<p class="wp-block-paragraph">We&#8217;re not going to do that in this case.</p>



<p class="wp-block-paragraph">We&#8217;re going to get a little bit fancier.</p>



<p class="wp-block-paragraph">Doing it this way, by the way, will increase your compiling efficiency</p>



<p class="wp-block-paragraph">when you start getting used to make files.</p>



<p class="wp-block-paragraph">I don&#8217;t know if you&#8217;re already using those, but it&#8217;s a good idea.</p>



<p class="wp-block-paragraph">So we&#8217;ll write a script to compile or make file to compile</p>



<p class="wp-block-paragraph">or some kind of a build system to compile.</p>



<p class="wp-block-paragraph">We&#8217;ll compile the CPP driver to just a file called</p>



<p class="wp-block-paragraph">driver.o, O for object file.</p>



<p class="wp-block-paragraph">So O for object file depends on driver.cpp.</p>



<p class="wp-block-paragraph">We&#8217;ll have another file called c.o,</p>



<p class="wp-block-paragraph">so the object file c.o depends on c.c and so forth.</p>



<p class="wp-block-paragraph">So I&#8217;m just gonna go cpp.o, circle it,</p>



<p class="wp-block-paragraph">and then down here we&#8217;ll do hello.o.</p>



<p class="wp-block-paragraph">Notice how all of these modules, regardless of the language they are written in, compile</p>



<p class="wp-block-paragraph">down to an object file.</p>



<p class="wp-block-paragraph">That&#8217;s really what it is.</p>



<p class="wp-block-paragraph">The higher level languages are just an illusion for us humans.</p>



<p class="wp-block-paragraph">So then at the very top, we want our actual executable file.</p>



<p class="wp-block-paragraph">We&#8217;ll call it main because that&#8217;s kind of a standard thing sometimes.</p>



<p class="wp-block-paragraph">So it&#8217;s like our main, we&#8217;ll have a file named main that we can execute.</p>



<p class="wp-block-paragraph">is going to be the main function.</p>



<p class="wp-block-paragraph">Spoiler, it&#8217;s going to be inside the driver.</p>



<p class="wp-block-paragraph">Remember, the main function, if you&#8217;re using GCC libraries,</p>



<p class="wp-block-paragraph">has to appear in exactly one place, one module in your program.</p>



<p class="wp-block-paragraph">It should appear one time and one time alone, not zero or more than one.</p>



<p class="wp-block-paragraph">So the main executable depends on the driver object file,</p>



<p class="wp-block-paragraph">the C object file, and the C++ object file,</p>



<p class="wp-block-paragraph">and the assembly hello object file.</p>



<p class="wp-block-paragraph">Looks complicated at first until you stare at it a while,</p>



<p class="wp-block-paragraph">complicated at first until you stare at it a while and then you just realize,</p>



<p class="wp-block-paragraph">oh, every source code is going to compile to its own object file.</p>



<p class="wp-block-paragraph">And then after we have all the object files,</p>



<p class="wp-block-paragraph">we&#8217;re going to have our executable just sort of linked together at the final</p>



<p class="wp-block-paragraph">linking stage. So with that in mind,</p>



<p class="wp-block-paragraph">I&#8217;m just going to copy paste a make file that I already wrote.</p>



<p class="wp-block-paragraph">It&#8217;s like my pre solution because this is not a make file video.</p>



<p class="wp-block-paragraph">And I just want you to know just real fast what it looks like.</p>



<p class="wp-block-paragraph">All I&#8217;m doing is I&#8217;m going to make some variables, uh,</p>



<p class="wp-block-paragraph">for my C++ compiler flags and my C compiler flags and my Yasm assembler flags.</p>



<p class="wp-block-paragraph">I&#8217;m really not doing anything fancy.</p>



<p class="wp-block-paragraph">I&#8217;m just sort of setting up some variables so I don&#8217;t have to type.</p>



<p class="wp-block-paragraph">The newer Ubuntu stuffs need a no executable stack flag and a no pi flag.</p>



<p class="wp-block-paragraph">So here we&#8217;re just like making variables for linking.</p>



<p class="wp-block-paragraph">My executable&#8217;s name is going to be main over here.</p>



<p class="wp-block-paragraph">I personally like to make make files that default to a cute help menu.</p>



<p class="wp-block-paragraph">help menu. I know most people just default to building, but, uh, you know, for educational</p>



<p class="wp-block-paragraph">purposes, I think this is a little more fun, a little easier. So this way later I can just type</p>



<p class="wp-block-paragraph">make menu or make build or make run or make clean or whatever I want to do. And, um,</p>



<p class="wp-block-paragraph">I&#8217;m going to make a target called run, which is what we&#8217;re going to be using. And then a target</p>



<p class="wp-block-paragraph">called build, which just only builds everything. The run target obviously depends on build so that</p>



<p class="wp-block-paragraph">to run it and and if you don&#8217;t know make files at this point it&#8217;s okay this is not a make file video</p>



<p class="wp-block-paragraph">i&#8217;m going to make some make file videos in the future</p>



<p class="wp-block-paragraph">then my binary the main program is just going to depend on all these object files notice how it</p>



<p class="wp-block-paragraph">depends on the driver the hello the c plus plus and the c object files so really uh at the linking</p>



<p class="wp-block-paragraph">stage we&#8217;re just going to use g plus plus to just sort of link all the object files together</p>



<p class="wp-block-paragraph">Then we have a little section to compile each source code file.</p>



<p class="wp-block-paragraph">So in order to make driver.o, I&#8217;m going to compile,</p>



<p class="wp-block-paragraph">I&#8217;m going to depend on the driver.cpp.</p>



<p class="wp-block-paragraph">And then when it comes to actually compiling, compiling it,</p>



<p class="wp-block-paragraph">I&#8217;m just going to type the commands to compile it here.</p>



<p class="wp-block-paragraph">Don&#8217;t worry about these crazy variables.</p>



<p class="wp-block-paragraph">I&#8217;m going to make more videos in the future.</p>



<p class="wp-block-paragraph">And then each module gets compiled in its own way.</p>



<p class="wp-block-paragraph">Then I just have a little target at the bottom called clean because I like to be</p>



<p class="wp-block-paragraph">able to just clean my build area of object files.</p>



<p class="wp-block-paragraph">I don&#8217;t know about you, but I like a clean build area.</p>



<p class="wp-block-paragraph">I&#8217;m a clean build area guy.</p>



<p class="wp-block-paragraph">I don&#8217;t like a dirty build area.</p>



<p class="wp-block-paragraph">So that was the make file.</p>



<p class="wp-block-paragraph">Again, this is not a make file video,</p>



<p class="wp-block-paragraph">so don&#8217;t worry too much about it right now.</p>



<p class="wp-block-paragraph">The next thing we should do is make a driver.</p>



<p class="wp-block-paragraph">Again, I&#8217;m gonna copy paste from my solution here</p>



<p class="wp-block-paragraph">because the driver should be easy.</p>



<p class="wp-block-paragraph">This is really, this video is mostly gonna be</p>



<p class="wp-block-paragraph">for people who have never done assembly before.</p>



<p class="wp-block-paragraph">So I&#8217;m just gonna assume you know a little bit</p>



<p class="wp-block-paragraph">about C++ and C already.</p>



<p class="wp-block-paragraph">So I&#8217;m going to say touch, let&#8217;s see, driver.cpp so that I can get the driver file in there.</p>



<p class="wp-block-paragraph">And I&#8217;m going to go nano driver, probably put it down in the first place.</p>



<p class="wp-block-paragraph">Then I&#8217;m just going to paste my solution.</p>



<p class="wp-block-paragraph">Oops, you can tell I copy pasted this from my IDE because I have the extra tabs in there, which I love.</p>



<p class="wp-block-paragraph">One thing to keep in mind is that, I guess like one of the first rules that I want to tell you for hybrid programs</p>



<p class="wp-block-paragraph">is that assembly doesn&#8217;t understand something called name mangling.</p>



<p class="wp-block-paragraph">mangling. So what is name mangling? Name mangling is basically when you have a,</p>



<p class="wp-block-paragraph">oh, this is not going to get called. So this is maybe not a great idea to show you name</p>



<p class="wp-block-paragraph">mangling. Let me, let me start on one of the other ones real fast too. Let&#8217;s do</p>



<p class="wp-block-paragraph">the C++ module. Okay. So I&#8217;m going to go nano CPP dot CPP. I know it&#8217;s a silly name. I know it.</p>



<p class="wp-block-paragraph">So CPP dot CPP, this is just a simple C++ program, which is meant to be called by</p>



<p class="wp-block-paragraph">by the assembly module just to show you that we can.</p>



<p class="wp-block-paragraph">And so we just have a little function here,</p>



<p class="wp-block-paragraph">void, you know, the CPP function.</p>



<p class="wp-block-paragraph">So it&#8217;s just a function that doesn&#8217;t really return anything.</p>



<p class="wp-block-paragraph">Inside of it, I&#8217;m just going to print,</p>



<p class="wp-block-paragraph">hello, this is the C++ function, no problem.</p>



<p class="wp-block-paragraph">Notice at the top,</p>



<p class="wp-block-paragraph">this is the first important thing that you should understand.</p>



<p class="wp-block-paragraph">In C++, we have overloads, right?</p>



<p class="wp-block-paragraph">You can have the same function name,</p>



<p class="wp-block-paragraph">but with different argument lists.</p>



<p class="wp-block-paragraph">And so that gets resolved under the hood</p>



<p class="wp-block-paragraph">by the name actually kind of changing</p>



<p class="wp-block-paragraph">based on what the argument signature is,</p>



<p class="wp-block-paragraph">what the prototype signature is.</p>



<p class="wp-block-paragraph">So that&#8217;s great and all,</p>



<p class="wp-block-paragraph">but in assembly, at least at this level,</p>



<p class="wp-block-paragraph">there&#8217;s no way to really differentiate between overloads.</p>



<p class="wp-block-paragraph">In assembly, we&#8217;ll just call a name of some function.</p>



<p class="wp-block-paragraph">But if we try to call a name,</p>



<p class="wp-block-paragraph">let&#8217;s say of just the CPP function,</p>



<p class="wp-block-paragraph">if we say call the CPP function in assembly,</p>



<p class="wp-block-paragraph">it&#8217;s not going to work</p>



<p class="wp-block-paragraph">because the actual function has not been compiled to have that name.</p>



<p class="wp-block-paragraph">It&#8217;s been compiled to have the CPP function</p>



<p class="wp-block-paragraph">and a bunch of extra symbols indicating what the argument list is.</p>



<p class="wp-block-paragraph">This is great for C++ programs, but it&#8217;s poor.</p>



<p class="wp-block-paragraph">It&#8217;s bad for other modules to be able to call the C++ function</p>



<p class="wp-block-paragraph">because they won&#8217;t really know what the actual name is</p>



<p class="wp-block-paragraph">after the mangling has been done.</p>



<p class="wp-block-paragraph">So what you want to do is make a little block called Xtern C,</p>



<p class="wp-block-paragraph">just like this.</p>



<p class="wp-block-paragraph">You say extern and then C in quotes and then do a scope with braces.</p>



<p class="wp-block-paragraph">And inside of that, just put the prototypes of any function that you want to be available to other modules.</p>



<p class="wp-block-paragraph">So, for example, we want the CPP function to be available to assembly modules and C modules, not just other C++ modules.</p>



<p class="wp-block-paragraph">So, I&#8217;m just going to put the prototype of it right there.</p>



<p class="wp-block-paragraph">You can put as many prototypes as you want.</p>



<p class="wp-block-paragraph">I think they should come from the same source file.</p>



<p class="wp-block-paragraph">different source file where you want something to be available elsewhere,</p>



<p class="wp-block-paragraph">you would put an extern C block for its prototype.</p>



<p class="wp-block-paragraph">This disables name mangling,</p>



<p class="wp-block-paragraph">which means the compiled name of the CPP function will actually be the CPP</p>



<p class="wp-block-paragraph">function. So it&#8217;s pretty good. This will make it available to assembly.</p>



<p class="wp-block-paragraph">So now that I&#8217;ve kind of explained that I can maybe close this and go back to</p>



<p class="wp-block-paragraph">what I was doing before. So this is the main driver program.</p>



<p class="wp-block-paragraph">We don&#8217;t need to engage in a dis,</p>



<p class="wp-block-paragraph">we don&#8217;t need to disable name mangling for the main function because no one is going to call main</p>



<p class="wp-block-paragraph">except the GCC libraries or like the OS. But when the C++ module calls other modules, it needs to</p>



<p class="wp-block-paragraph">be able to call the right name. And remember in C++, there&#8217;s name mangling enabled by default.</p>



<p class="wp-block-paragraph">So if I tell it, let&#8217;s say on this line right here, or you can do alt N to get line numbers on nano.</p>



<p class="wp-block-paragraph">we want to call on the hello module will C++ by default will assume that hello has name</p>



<p class="wp-block-paragraph">mangling applied to it, which means it will actually try to call some name that is totally</p>



<p class="wp-block-paragraph">different based on the prototype signature, the incoming arguments and things like that.</p>



<p class="wp-block-paragraph">But so we want to disable that because we wanted to just call the actual name because</p>



<p class="wp-block-paragraph">hello is going to be a function that we make inside of assembly.</p>



<p class="wp-block-paragraph">So it&#8217;s not going to be name mangled.</p>



<p class="wp-block-paragraph">So that&#8217;s why up here on line seven, we enter its signature.</p>



<p class="wp-block-paragraph">Enter its signature. Oh, actually this is from a different version of something that I was doing. I&#8217;m not going to return anything from hello</p>



<p class="wp-block-paragraph">We&#8217;ll do name a demangling with our extern C block just void hello</p>



<p class="wp-block-paragraph">And now when we call hello, it&#8217;s actually going to call a function called hello without any other</p>



<p class="wp-block-paragraph">mangling same thing for the C S E A</p>



<p class="wp-block-paragraph">Oh</p>



<p class="wp-block-paragraph">That was from a different version. I wrote we&#8217;re not going to be calling C in this module. Don&#8217;t worry</p>



<p class="wp-block-paragraph">We&#8217;re going to keep it simple</p>



<p class="wp-block-paragraph">So pretty much we&#8217;re going to print hello and then we&#8217;re going to print,</p>



<p class="wp-block-paragraph">then we&#8217;re going to call the hello and then we&#8217;re going to say goodbye.</p>



<p class="wp-block-paragraph">And then that&#8217;s going to be the end of the program.</p>



<p class="wp-block-paragraph">So let me close out of that and just double check what I have written right now.</p>



<p class="wp-block-paragraph">So we&#8217;ve got CPP and okay, we need to do C, nano C dot C.</p>



<p class="wp-block-paragraph">Okay, so let me get my solution real fast here.</p>



<p class="wp-block-paragraph">It&#8217;s a simple program.</p>



<p class="wp-block-paragraph">Literally, it&#8217;s just a C program that prints something.</p>



<p class="wp-block-paragraph">Remember in C++, we&#8217;ve got the IO stream, but we don&#8217;t have that in C.</p>



<p class="wp-block-paragraph">that in C. So I&#8217;m just going to use printf. Oh, by the way, this is a C function. Hi.</p>



<p class="wp-block-paragraph">So done with that. Pretty easy. Shoot. You know what? I need to start learning how to do</p>



<p class="wp-block-paragraph">clear and LSA. So I can just go up, up, up. So C++, C and the driver</p>



<p class="wp-block-paragraph">and the make file, which is huge. I just realized that. And now I guess we can start</p>



<p class="wp-block-paragraph">or hello function.</p>



<p class="wp-block-paragraph">Okay.</p>



<p class="wp-block-paragraph">So maybe I want to write this in the Genie program.</p>



<p class="wp-block-paragraph">So I&#8217;m going to, well, maybe I&#8217;ll first, I&#8217;ll say touch,</p>



<p class="wp-block-paragraph">and I&#8217;ll say hello.assembly.</p>



<p class="wp-block-paragraph">And then now that it&#8217;s there, I can try to open it up.</p>



<p class="wp-block-paragraph">Let&#8217;s see.</p>



<p class="wp-block-paragraph">Hello.assembly.</p>



<p class="wp-block-paragraph">Okay, so now let&#8217;s write an assembly program.</p>



<p class="wp-block-paragraph">I&#8217;m not going to spend too much time talking about this,</p>



<p class="wp-block-paragraph">but I&#8217;ll say like data section here,</p>



<p class="wp-block-paragraph">and we&#8217;ll say section.data.</p>



<p class="wp-block-paragraph">We&#8217;ll say section.data and then we&#8217;ll say system calls.</p>



<p class="wp-block-paragraph">This is not a system calls video.</p>



<p class="wp-block-paragraph">I&#8217;m just gonna do this very quickly without explaining.</p>



<p class="wp-block-paragraph">System write is gonna be code one, I guess.</p>



<p class="wp-block-paragraph">And then we&#8217;re gonna do file descriptors, one for stdout.</p>



<p class="wp-block-paragraph">Whoops, stdout, it&#8217;s gonna be equal to one.</p>



<p class="wp-block-paragraph">This is not a file descriptors video.</p>



<p class="wp-block-paragraph">I&#8217;ll put FDs, I guess.</p>



<p class="wp-block-paragraph">And then we&#8217;ll make some C strings.</p>



<p class="wp-block-paragraph">C strings, you know, just character arrays, basically.</p>



<p class="wp-block-paragraph">I&#8217;ll say, well, you know what?</p>



<p class="wp-block-paragraph">I don&#8217;t want to type this all out</p>



<p class="wp-block-paragraph">because this is not a lesson on variables.</p>



<p class="wp-block-paragraph">I&#8217;m just going to copy paste my existing solution here.</p>



<p class="wp-block-paragraph">And, you know, long story short,</p>



<p class="wp-block-paragraph">I&#8217;m going to try to make this a pretty program</p>



<p class="wp-block-paragraph">that prints hello and goodbye and things.</p>



<p class="wp-block-paragraph">And so we just have like some variables</p>



<p class="wp-block-paragraph">that sort of just you know old strings and hold the strings length and we&#8217;re</p>



<p class="wp-block-paragraph">gonna do one that calls a new line and so forth actually that&#8217;ll be a different</p>



<p class="wp-block-paragraph">video but I&#8217;ll leave it in there for now so now let&#8217;s make the text section</p>



<p class="wp-block-paragraph">remember the text section in Yasm is just for the actual code of your program</p>



<p class="wp-block-paragraph">and then we need to set up some external symbols. So right now, at least for the purposes of this</p>



<p class="wp-block-paragraph">source code, this source code is inside of the hello module. So you can imagine we&#8217;re inside of</p>



<p class="wp-block-paragraph">hello.o. All the o&#8217;s get linked together in the executable, but between themselves, there&#8217;s kind</p>



<p class="wp-block-paragraph">of a little bit of like a border situation happening. There&#8217;s like some separation. So</p>



<p class="wp-block-paragraph">are going to be available to the other modules,</p>



<p class="wp-block-paragraph">even if they&#8217;re part of the same executable.</p>



<p class="wp-block-paragraph">It&#8217;s kind of convenient because you would like sometimes</p>



<p class="wp-block-paragraph">to be able to write tons and tons of functions</p>



<p class="wp-block-paragraph">that are only available inside of your assembly module,</p>



<p class="wp-block-paragraph">and they might not be available to other modules,</p>



<p class="wp-block-paragraph">and therefore you don&#8217;t want to pollute the namespace,</p>



<p class="wp-block-paragraph">I guess, of the global namespace of the executable.</p>



<p class="wp-block-paragraph">So by default, if I make a function called hello,</p>



<p class="wp-block-paragraph">how you make a function, just a quick recap here.</p>



<p class="wp-block-paragraph">This is not a functions video.</p>



<p class="wp-block-paragraph">make a symbol with the name of the function you want and then you just put a ret after it and then</p>



<p class="wp-block-paragraph">you hope that whoever got you there is going to use the call instruction but anyway for now</p>



<p class="wp-block-paragraph">we&#8217;re just going to say this is our hello function okay i cannot call the hello function now from</p>



<p class="wp-block-paragraph">another module i have to make it visible to the other modules with a special keyword called global</p>



<p class="wp-block-paragraph">our program the hello function will be available to the other modules but not anything else that</p>



<p class="wp-block-paragraph">I type without marking it as global so let&#8217;s go ahead and do let&#8217;s do a welcome message and this</p>



<p class="wp-block-paragraph">is not a system call a video maybe I should just copy paste this so just looking at it this is a</p>



<p class="wp-block-paragraph">going to quickly you know breeze through what we&#8217;re doing in case you&#8217;re interested but you</p>



<p class="wp-block-paragraph">don&#8217;t have to care too much about this right now we&#8217;re going to tell rax what system call we want</p>



<p class="wp-block-paragraph">to make the code for that is what i put up in system right which is just code one means let&#8217;s</p>



<p class="wp-block-paragraph">write to a file we&#8217;ll give it the file handle uh that&#8217;s going to be the variable we made called fd</p>



<p class="wp-block-paragraph">std out which means we&#8217;re going to be giving it the file handle of one which means we&#8217;re telling</p>



<p class="wp-block-paragraph">to print to standard output because file handle one is always standard output.</p>



<p class="wp-block-paragraph">And then we just give it the a pointer to the first character of the message</p>



<p class="wp-block-paragraph">string that we made and then tell it how long that message is. Then we do system call this should</p>



<p class="wp-block-paragraph">actually um this this should actually print a string. Okay so then uh let&#8217;s see down here I&#8217;m</p>



<p class="wp-block-paragraph">going to make a function called crlf because I&#8217;m lazy and I don&#8217;t like constantly adding extra stuff</p>



<p class="wp-block-paragraph">constantly adding extra stuff to the string so that there will be like a new line line feed</p>



<p class="wp-block-paragraph">situation so i usually like to make a little function somewhere called crlf carriage return</p>



<p class="wp-block-paragraph">line feed is what it stands for and it&#8217;s the same thing it&#8217;s just like load up the system call</p>



<p class="wp-block-paragraph">registers so that it knows i want to print the string which is just a line feed</p>



<p class="wp-block-paragraph">carriage return line feed and then actually call system call and then return to the caller so this</p>



<p class="wp-block-paragraph">back up here let&#8217;s see crlf i guess i am going to be doing it it&#8217;s just a string with the the</p>



<p class="wp-block-paragraph">slash r slash n or the carriage return line feed characters in ascii those are 13 comma 10 so i can</p>



<p class="wp-block-paragraph">put that there instead of a literal quoted string okay so we got that and then that means after the</p>



<p class="wp-block-paragraph">welcome message i can just like call crlf in order to have uh the cursor jump down to the next uh</p>



<p class="wp-block-paragraph">after that string is notice how I don&#8217;t have any line feeds after my strings that&#8217;s kind of why I</p>



<p class="wp-block-paragraph">like to do crlf and it lets me just call crlf a bunch of times if I want to just like space things</p>



<p class="wp-block-paragraph">out temporarily okay so we&#8217;ve got the hello function and now we&#8217;re going to print another</p>



<p class="wp-block-paragraph">message here I&#8217;ll just explain this real fast so I&#8217;m going to print a message about calling a c</p>



<p class="wp-block-paragraph">So same thing, we&#8217;re just going to tell the system call service that we want to print a string and it&#8217;s going to be our string here that says, you know, we&#8217;re about to print this.</p>



<p class="wp-block-paragraph">We&#8217;re about to, what do we say?</p>



<p class="wp-block-paragraph">We&#8217;re about to call the C function and then later we&#8217;re going to call the C++ function.</p>



<p class="wp-block-paragraph">So we&#8217;re just going to print a message announcing and do CRLF.</p>



<p class="wp-block-paragraph">So that&#8217;s really nothing new at all.</p>



<p class="wp-block-paragraph">And then down here we actually call the C function, which is not going to be in this module.</p>



<p class="wp-block-paragraph">It&#8217;s going to be in the C module, the other source code.</p>



<p class="wp-block-paragraph">Somewhere in this program, we need to let our assembly module know</p>



<p class="wp-block-paragraph">that the C function is available because it kind of goes both ways.</p>



<p class="wp-block-paragraph">In assembly, I have to mark a function as global if I want other modules to be able</p>



<p class="wp-block-paragraph">to call that function, but I also have to mark a function as external</p>



<p class="wp-block-paragraph">if I want to be able to call some other modules function.</p>



<p class="wp-block-paragraph">So we have to go back up to the top.</p>



<p class="wp-block-paragraph">I mean, somewhere in the text section, I think would be fine.</p>



<p class="wp-block-paragraph">But for me, I just like to put it at the top.</p>



<p class="wp-block-paragraph">put it at the top at the top so I&#8217;ll say externals and then I&#8217;ll go extern</p>



<p class="wp-block-paragraph">keyword and then just name the function that I intend to call this way when the</p>



<p class="wp-block-paragraph">linker is trying to link all the objects together it doesn&#8217;t get upset because</p>



<p class="wp-block-paragraph">you tried to call a C function which is not in the current module it&#8217;ll</p>



<p class="wp-block-paragraph">understand that it&#8217;s gonna happen you know like it&#8217;s gonna call other modules</p>



<p class="wp-block-paragraph">for that it usually gets upset right away and then while we&#8217;re at it let&#8217;s do</p>



<p class="wp-block-paragraph">Let&#8217;s turn the CPP function because that&#8217;s going to come from the C++ module.</p>



<p class="wp-block-paragraph">So now we have both of our external functions set up.</p>



<p class="wp-block-paragraph">We&#8217;ve marked our global hello function so other modules can call us.</p>



<p class="wp-block-paragraph">And then let&#8217;s see, oh, what did I do wrong?</p>



<p class="wp-block-paragraph">I put the C message in the wrong spot.</p>



<p class="wp-block-paragraph">I was inside of the CRLF function.</p>



<p class="wp-block-paragraph">So I&#8217;m just going to copy paste that back up here.</p>



<p class="wp-block-paragraph">Okay.</p>



<p class="wp-block-paragraph">Then we&#8217;ll do the same thing for the C++ message,</p>



<p class="wp-block-paragraph">or for the C++ stuff.</p>



<p class="wp-block-paragraph">I will first print a C++ message</p>



<p class="wp-block-paragraph">with these lines up here.</p>



<p class="wp-block-paragraph">That&#8217;s just like a regular system call,</p>



<p class="wp-block-paragraph">and then I&#8217;ll do a CRLF, so nothing new,</p>



<p class="wp-block-paragraph">just printing something.</p>



<p class="wp-block-paragraph">And then I will actually call the C++ function</p>



<p class="wp-block-paragraph">called the CPP function.</p>



<p class="wp-block-paragraph">Then I&#8217;ll say goodbye with another block of text.</p>



<p class="wp-block-paragraph">Again, not super important or complicated,</p>



<p class="wp-block-paragraph">so I&#8217;m just gonna paste it.</p>



<p class="wp-block-paragraph">Just another string.</p>



<p class="wp-block-paragraph">string. And then when we&#8217;re done, I&#8217;ll just say, you know, return, we&#8217;re done. So that means if</p>



<p class="wp-block-paragraph">you notice how we don&#8217;t have like any symbols in here called underscore start, that means this is</p>



<p class="wp-block-paragraph">not a pure assembly program. And we don&#8217;t even have a symbol inside of here that is called main.</p>



<p class="wp-block-paragraph">So that means this hello ASM module is not going to be the entry point of our program. It&#8217;s just</p>



<p class="wp-block-paragraph">going to expose a function called hello, which does some stuff. The entry point of our program</p>



<p class="wp-block-paragraph">really, let&#8217;s see, where is it? Oh, gosh, I think I already closed it for some reason. It&#8217;s the</p>



<p class="wp-block-paragraph">driver program, which we talked about. So remember the driver program, it&#8217;s got a main here. So that</p>



<p class="wp-block-paragraph">means this is going to be what the GCC libraries or the operating system calls, however you want</p>



<p class="wp-block-paragraph">to think of it. So this is the entry point of our program, it&#8217;ll just print something quickly,</p>



<p class="wp-block-paragraph">then it&#8217;ll call the hello function, which means execution will jump in to the hello module. So</p>



<p class="wp-block-paragraph">module and and also it would be really easy to apply this logic to have a c module call on an</p>



<p class="wp-block-paragraph">assembly module and in fact you can use this logic to have every type of module call on any other i</p>



<p class="wp-block-paragraph">mean just if you have a c++ function either being defined in the current module or being referenced</p>



<p class="wp-block-paragraph">in another module just make sure that you have an extern c block and then if you&#8217;re inside of a c</p>



<p class="wp-block-paragraph">and you&#8217;re going to call a non-name mingled module like C or assembly,</p>



<p class="wp-block-paragraph">then just do this block here.</p>



<p class="wp-block-paragraph">No problem.</p>



<p class="wp-block-paragraph">What else can I really tell you?</p>



<p class="wp-block-paragraph">The C module, we looked at that.</p>



<p class="wp-block-paragraph">The C++, we looked at that.</p>



<p class="wp-block-paragraph">Pretty easy.</p>



<p class="wp-block-paragraph">Hello module.</p>



<p class="wp-block-paragraph">I mean, I guess we&#8217;re kind of done already.</p>



<p class="wp-block-paragraph">So what we should see now is a little intro here.</p>



<p class="wp-block-paragraph">Hello, my name is whatever.</p>



<p class="wp-block-paragraph">And then when we jump into the hello module,</p>



<p class="wp-block-paragraph">we should see a little welcome message about being in the assembly module.</p>



<p class="wp-block-paragraph">And then we should see a message about calling the C function.</p>



<p class="wp-block-paragraph">And then the C function should print.</p>



<p class="wp-block-paragraph">Let me open that up for you.</p>



<p class="wp-block-paragraph">Let&#8217;s see.</p>



<p class="wp-block-paragraph">The C function should print.</p>



<p class="wp-block-paragraph">Just, oh, by the way, this is the C function.</p>



<p class="wp-block-paragraph">And then when it returns at the very end, remember, even in a void function, there is</p>



<p class="wp-block-paragraph">a return statement implicit at the end of scope.</p>



<p class="wp-block-paragraph">So when it returns, it&#8217;ll come back down here.</p>



<p class="wp-block-paragraph">And then the C++ message will get printed.</p>



<p class="wp-block-paragraph">printed and then the C++ function will get called which is going to end up being</p>



<p class="wp-block-paragraph">just it just prints you know another message this is the C++ function</p>



<p class="wp-block-paragraph">then when it returns implicitly at the end of the function</p>



<p class="wp-block-paragraph">then we get down to here where we just basically say goodbye and then return to the caller</p>



<p class="wp-block-paragraph">the caller in this case is going to be the driver program because this whole time we were just inside</p>



<p class="wp-block-paragraph">called. So then the driver will say goodbye and then it will return control to the GCC libraries</p>



<p class="wp-block-paragraph">or the operating system ending the program. Let&#8217;s see if that works. Okay, clear. And so,</p>



<p class="wp-block-paragraph">you know, the way I wreck my make files, I&#8217;d like to do a little menu. I type make and it&#8217;s like,</p>



<p class="wp-block-paragraph">oh, the menu, make menu, make build, just in case, just to see what&#8217;s up. Okay, clear.</p>



<p class="wp-block-paragraph">say, let&#8217;s do clear and make run because that&#8217;s really what we&#8217;re after.</p>



<p class="wp-block-paragraph">Again, run will implicitly call build.</p>



<p class="wp-block-paragraph">So do that.</p>



<p class="wp-block-paragraph">And it seems to have succeeded.</p>



<p class="wp-block-paragraph">It wasn&#8217;t actually very exciting.</p>



<p class="wp-block-paragraph">Let me do a make clean so you can see it compile real fast.</p>



<p class="wp-block-paragraph">We run it.</p>



<p class="wp-block-paragraph">It&#8217;s compiling.</p>



<p class="wp-block-paragraph">That was still kind of fast.</p>



<p class="wp-block-paragraph">So up here is basically the make file, all these lines.</p>



<p class="wp-block-paragraph">They&#8217;re just calling your normal compiler and assembler tools and linker tools.</p>



<p class="wp-block-paragraph">linker tools and then here&#8217;s the driver like we said it prints the hello message</p>



<p class="wp-block-paragraph">you know my name is whatever I love that name I have a strange name generator</p>



<p class="wp-block-paragraph">that I found online that&#8217;s not my name you can call me that if you want to and</p>



<p class="wp-block-paragraph">then we have the message that we&#8217;re going to call the hello module so now</p>



<p class="wp-block-paragraph">we&#8217;ve called into the hello function inside of the assembly module assembly</p>



<p class="wp-block-paragraph">module prints hello you know I&#8217;m inside of here now and then the assembly module</p>



<p class="wp-block-paragraph">Now we&#8217;re going to call the C function and then the C function actually</p>



<p class="wp-block-paragraph">executes and it is now printing with its print F function call that it did,</p>



<p class="wp-block-paragraph">you know, by the way, this is a C function. Hi.</p>



<p class="wp-block-paragraph">And then it returns to the caller.</p>



<p class="wp-block-paragraph">Maybe I could have added another print statement if I felt like I wanted to</p>



<p class="wp-block-paragraph">spend more time, but it returns to the caller, which is the hello function.</p>



<p class="wp-block-paragraph">Then we get to the next part of the hello function where it&#8217;s like now calling</p>



<p class="wp-block-paragraph">the C function as a print statement.</p>



<p class="wp-block-paragraph">Then it actually does call the C function. The C function prints itself out.</p>



<p class="wp-block-paragraph">prints itself out hello this is the C function and then the assembly module</p>



<p class="wp-block-paragraph">says goodbye it says it&#8217;s finished and then it returns to the caller so finally</p>



<p class="wp-block-paragraph">at the end of this print statement the there&#8217;s like that little return statement</p>



<p class="wp-block-paragraph">at the bottom of the hello module that returns to the caller which was the</p>



<p class="wp-block-paragraph">driver dot CPP program so then the driver prints the driver is now back in</p>



<p class="wp-block-paragraph">the driver is now back in control. You can see that message behind the terminal here.</p>



<p class="wp-block-paragraph">The driver is now back in control. Then it says goodbye. Then it returns zero to the operating</p>



<p class="wp-block-paragraph">system and the whole program is done. So it&#8217;s important to understand that if you want to</p>



<p class="wp-block-paragraph">pass arguments, right now I&#8217;m just going to say, you know, I&#8217;m going to make another video that</p>



<p class="wp-block-paragraph">is more robust in the future about passing arguments back and forth between these. It&#8217;s</p>



<p class="wp-block-paragraph">important to understand for now that you can pass arguments between all these different</p>



<p class="wp-block-paragraph">between all these different module functions if you want.</p>



<p class="wp-block-paragraph">Like if I wanted to give the.</p>



<p class="wp-block-paragraph">If I wanted to give the hello function.</p>



<p class="wp-block-paragraph">An incoming argument, let&#8217;s say like an integer or a character value or a pointer</p>



<p class="wp-block-paragraph">or something like that, I could just load up appropriate registers.</p>



<p class="wp-block-paragraph">Remember, we have argument registers in assembly.</p>



<p class="wp-block-paragraph">I think I can never remember if RSI or RDI are the first one.</p>



<p class="wp-block-paragraph">I&#8217;m going to say RDI is the first argument just off the top of my head.</p>



<p class="wp-block-paragraph">I always look that up.</p>



<p class="wp-block-paragraph">So if I wanted to call, let&#8217;s say give an integer argument to hello when I originally</p>



<p class="wp-block-paragraph">called it, then from the driver, I literally would just have to type an integer argument</p>



<p class="wp-block-paragraph">in there and then under the hood, the RDI register, assuming that I&#8217;m right about RDI</p>



<p class="wp-block-paragraph">being the first argument, the RDI register would get loaded up with that value.</p>



<p class="wp-block-paragraph">your assembly program all you&#8217;d have to do is do something with the RDI register</p>



<p class="wp-block-paragraph">you know load it up save it do whatever it is that you think you&#8217;re gonna do so</p>



<p class="wp-block-paragraph">that&#8217;s how you pass an integer or like a character or a pointer from C++ to</p>



<p class="wp-block-paragraph">assembly it works the same exact way if you want to pass arguments when calling</p>



<p class="wp-block-paragraph">from C to assembly and when if you want to pass integers from assembly to C or</p>



<p class="wp-block-paragraph">or C++, it&#8217;s the same thing just backwards.</p>



<p class="wp-block-paragraph">First, you load up RDI as the first argument register with whatever value you want to pass</p>



<p class="wp-block-paragraph">to C or C++.</p>



<p class="wp-block-paragraph">And then in the signature of the C++ function, you just expect, you know, a long or, you</p>



<p class="wp-block-paragraph">know, whatever you were going to get and the register will already be loaded up.</p>



<p class="wp-block-paragraph">Remember, the C++ is not really happening on the machine.</p>



<p class="wp-block-paragraph">It gets compiled down to assembly.</p>



<p class="wp-block-paragraph">So this source code that we&#8217;re looking at, it&#8217;s another illusion for our benefit.</p>



<p class="wp-block-paragraph">benefit. It&#8217;s not happening. It&#8217;s getting assembled and then compiled down to machine code. And then</p>



<p class="wp-block-paragraph">that is what&#8217;s actually happening on the machine. So when you write that you have an argument in a</p>



<p class="wp-block-paragraph">C++ function signature prototype, you&#8217;re not really writing that at all. You&#8217;re just saying</p>



<p class="wp-block-paragraph">that the A variable should get loaded from whatever the RDI register had.</p>



<p class="wp-block-paragraph">Or if you previously loaded the RDI register and you want to call a C++ function, that&#8217;s</p>



<p class="wp-block-paragraph">a C++ function that&#8217;s what it would expect the RDI register so it can work pretty seamlessly</p>



<p class="wp-block-paragraph">just calling things back and forth um so yeah I guess that&#8217;s all I really had to say</p>



<p class="wp-block-paragraph">this is the basics of writing a hybrid program thank you for watching I hope you learned a</p>



<p class="wp-block-paragraph">little bit of stuff and had a little bit of fun see you in the next video</p>



<p class="wp-block-paragraph">thanks for watching this video again from the bottom of my heart I really</p>



<p class="wp-block-paragraph">appreciate it I do hope you did learn something and have some fun if you could</p>



<p class="wp-block-paragraph">do me a please a small little favor could you please subscribe and follow</p>



<p class="wp-block-paragraph">this channel or these videos or whatever it is you do on the current social media</p>



<p class="wp-block-paragraph">website that you&#8217;re looking at right now it would really mean the world to me and</p>



<p class="wp-block-paragraph">it&#8217;ll help make more videos and grow this community so we&#8217;ll be able to do</p>



<p class="wp-block-paragraph">more videos longer videos better videos or just I&#8217;ll be able to keep making</p>



<p class="wp-block-paragraph">videos in general. So please do me a kindness and subscribe. You know, sometimes I&#8217;m sleeping</p>



<p class="wp-block-paragraph">in the middle of the night and I just wake up because I know somebody subscribed or followed.</p>



<p class="wp-block-paragraph">It just wakes me up and I get filled with joy. That&#8217;s exactly what happens every single time.</p>



<p class="wp-block-paragraph">So you could do it as a nice favor to me or you could troll me if you want to just wake me up in</p>



<p class="wp-block-paragraph">the middle of the night, just subscribe and then I&#8217;ll just wake up. I promise that&#8217;s what&#8217;ll happen.</p>



<p class="wp-block-paragraph">Also, if you look at the middle of the screen right now, you should see a QR code, which you</p>



<p class="wp-block-paragraph">QR code which you can scan in order to go to the website which I think is also named somewhere at</p>



<p class="wp-block-paragraph">the bottom of this video and it&#8217;ll take you to my main website where you can just kind of like see</p>



<p class="wp-block-paragraph">all the videos I published and the services and tutorials and things that I offer and all that</p>



<p class="wp-block-paragraph">good stuff and if you have a suggestion for clarifications or errata or just future videos</p>



<p class="wp-block-paragraph">that you want to see please leave a comment or if you just want to say hey what&#8217;s up what&#8217;s going on</p>



<p class="wp-block-paragraph">you know just send me a comment whatever i also wake up for those in the middle of the night i get</p>



<p class="wp-block-paragraph">i wake up in a cold sweat and i&#8217;m like it would really it really mean the world to me i would</p>



<p class="wp-block-paragraph">really appreciate it so again thank you so much for watching this video and um enjoy the cool music</p>



<p class="wp-block-paragraph">as as i fade into the darkness which is coming for us all</p>



<p class="wp-block-paragraph">Thank you.</p>
<p>The post <a href="https://www.NeuralLantern.com/mix-c-c-and-assembly-into-one-program-hybrid-program-full-build-tutorial/">Mix C++, C, and Assembly into One Program &#8211; Hybrid Program Full Build Tutorial</a> appeared first on <a href="https://www.NeuralLantern.com">NeuralLantern.com</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.NeuralLantern.com/mix-c-c-and-assembly-into-one-program-hybrid-program-full-build-tutorial/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
