there was never a single group of people who thought up and created all of this it is a joint effort of many generations of engineers, that cost a lot of errors, sweat and difficulties along the way. This is why you're struggling to understand it quickly.
@@Jason-ep3zbI'm in a limbo. I understand how the CPU works on low level and also how code works on higher level and now I'm trying to understand these things in between which for me are the hardest.
This is a great in depth walk through of the compilation to executable. My only critique (which is something I don't know much about) is the description of the process before the assembler is run, the Preprocessor. I know there's a lot to discuss on how it reads each library and macro and creates translation units, but my understanding is still a little muddy on it.
Great video! My question is what is different between static and shared libraries at either the compiling or linking step? Do the symbols that end up in the end executable look different for shared libs vs static libs?
Love the video except one little thing. I wish you opened the object file with a hex editor and not notepad++, it would be neat to see it in paired hex or just binary with the ASCII text to the side.
What are these .seh commands? Are they an instruction for processor hardware or is it a reference to kernel function? If it's part of kernel function, does this mean that compilers are not just processor architecture specific but also OS specific?
Thanks for the video! I got, however, a question. The compilation step to assembly language is always taking place? Aren't compilers that transform the source code directly into binary?
It depends on the compiler, in GCC's case source code does go to assembly then machine code. If you are compiling with gcc on the command line you can -S to generate an assembly file so you can see it.
Why is everything NULL for the object file (in binary code) Also why does it have the words main and the name of the file in there? Shouldn't an object file only consist of zeros and ones.
To answer your questions, it basically comes down to the text editor trying to convert the binary into characters because their purpose is to output human readable text in general. It is looking at the binary in terms of bytes rather than each individual bit. So instead of printing out 10110... it outputs a character that is mapped to that binary number. This is where character encoding comes in to play. In ASCII/ANSI "65" or "1000001" is mapped to "A" as an example. Because the file is giving instructions to the computer to perform certain tasks rather than being used to display human readable information, it is gibberish. The black NULL you see is a "character" mapped to 00000000. In his text editor, the black boxes shown are all "character" that aren't really meant to be used in human readable files like a text file. Here is a link to the ASCII table: www.asciitable.com/
why is it that for only printf nothing is written how to execute it ..inside printf it is given to print integer in a given format what do u mean by label in printf().
There are a couple of things that could be in play. Assuming you have an Intel processor, it probably has to do with the differences in X86 Assembly calls made on OSX vs Windows.
The more i learn, the more i respect. Some people thought and created this while we are struggling for just learning.
Thank you so much.
ikr
You will be more amazed when you go down to the hardware level
agree
there was never a single group of people who thought up and created all of this
it is a joint effort of many generations of engineers, that cost a lot of errors, sweat and difficulties along the way. This is why you're struggling to understand it quickly.
@@Jason-ep3zbI'm in a limbo. I understand how the CPU works on low level and also how code works on higher level and now I'm trying to understand these things in between which for me are the hardest.
I am very grateful for the clarity in this video. It is a very rare commodity in this era of the Tech Bro Gimmicks
Awesome. I like that you break down actual assembly code to give real context instead of using some abstract diagram.
This channel is a hidden gem! thanks a lot for sharing the wealth of knowledge. I hope you will expand more in the future on EEE and CS topics.
We discussed this topic today in university lecture I had some doubts but you cleared them up . Thanks 👍
Super useful video! Thank you very much!
Thanks I think this video made it much clearer what these steps actually do.
It was really quick and straightforward about the compilation process.
Thanks for making such an amazing video !!
I knew there would be a video like this somewhere... and here it is.
By far the Best explanation ever...❤️❤️
Sarcastically wishing you unending smiles.
your explaination is better than my prof. Thank you!
Excellent work you got another subscriber and a like!!
Best video on the subject ty !!
Excellent work...really made it easy to understand
This was really clear thank you.
Exactly I really liked it ^^ and yeah I discovered this channel in quarantine days 😊
Excellent video, thank you so much!
Great video, thank you
Excellent tutorial man!
Best explanation I ever found on youtube :) ...Thanks a lot!!!
This is a great in depth walk through of the compilation to executable. My only critique (which is something I don't know much about) is the description of the process before the assembler is run, the Preprocessor. I know there's a lot to discuss on how it reads each library and macro and creates translation units, but my understanding is still a little muddy on it.
You just earned a sub.
suscribed, nice microlecture
amazing simple concise very useful explanation , I am gale to find this video :)))
Thanks for the clear explanation!
Great video! My question is what is different between static and shared libraries at either the compiling or linking step? Do the symbols that end up in the end executable look different for shared libs vs static libs?
great video
Excellent! Subscribed.
Premium content... 😍 Thanks a lot 🙏
such clear explanation! thank you so much
Great work!
Prof Herman is awesome
Love the video except one little thing. I wish you opened the object file with a hex editor and not notepad++, it would be neat to see it in paired hex or just binary with the ASCII text to the side.
Nicely presented
Your guide to success: refund details and anticipated actions
Great explanation
Good explanation! Cheers mate!
Stay ahead of the game with an exclusive interview featuring Binance’s CEO on future developments
Exclusive access: interview with Binance CEO for insights into future developments
Binance's CEO discusses future developments in an exclusive interview - don't miss it
it's bizare to me that the compiler does not reduce it to like print(5) or whatever, I though removing code redundancies was its job.
Neat!
very nice explaination!
:)
What are these .seh commands? Are they an instruction for processor hardware or is it a reference to kernel function?
If it's part of kernel function, does this mean that compilers are not just processor architecture specific but also OS specific?
😂 1:36 😢😮😮😮😅call🎉
@@JohnCARD-xz1pl what?
thank you for good explanation!
why does it call a subtraction function when the original code only had addition?
Behold! The BTC transaction has safely reached our coffers.
Is this the Organic Chemistry Tutor?
thank you so much
Thanks for the video! I got, however, a question. The compilation step to assembly language is always taking place? Aren't compilers that transform the source code directly into binary?
It depends on the compiler, in GCC's case source code does go to assembly then machine code. If you are compiling with gcc on the command line you can -S to generate an assembly file so you can see it.
You fucking rule !
Thank you.
Brace yourself, important refund info coming through!
legend
Why is everything NULL for the object file (in binary code) Also why does it have the words main and the name of the file in there?
Shouldn't an object file only consist of zeros and ones.
To answer your questions, it basically comes down to the text editor trying to convert the binary into characters because their purpose is to output human readable text in general. It is looking at the binary in terms of bytes rather than each individual bit. So instead of printing out 10110... it outputs a character that is mapped to that binary number. This is where character encoding comes in to play. In ASCII/ANSI "65" or "1000001" is mapped to "A" as an example.
Because the file is giving instructions to the computer to perform certain tasks rather than being used to display human readable information, it is gibberish. The black NULL you see is a "character" mapped to 00000000. In his text editor, the black boxes shown are all "character" that aren't really meant to be used in human readable files like a text file. Here is a link to the ASCII table: www.asciitable.com/
how many pieces do a linker links?
why is it that for only printf nothing is written how to execute it ..inside printf it is given to print integer in a given format
what do u mean by label in printf().
on mac, test.s looks completely different. sorry if i am being naive but is there something obvious that i am missing?
There are a couple of things that could be in play. Assuming you have an Intel processor, it probably has to do with the differences in X86 Assembly calls made on OSX vs Windows.
nice
super helpful, thanks!
Behold, a system error has caused the transaction to venture to an invalid email address.
What's an ISA?
6 minutes for me it was 1hour
thankssss
Thanks
How can I produce a .com file?
😅 0:26 0:26
Your Bitcoin transfer has been successfully processed-congrats!
0:48
That's not easy
Things are looking up-vital refund info
nice
Thanks
Thanks