读书-程序员的自我修养-链接、封装与库(1)
http://www.xwood.net/site_domain/_root/5870/5930/5932/t_c264488.html
1. 作为程序员,这些问题你都知道吗?
1. 程序为什么需要编译了以后才可以运行?
答:将高级语言,如c语言经过编译处理,完成语法,语义分析,生成汇编代码,从而翻译成机器认识的机器代码,进而执行程序。
参考:
https://www.cnblogs.com/tsingke/p/9747141.html
非常好的一篇文章。
2. 编译器在把c代码编译成机器代码过程中做了什么?怎么做的?
答: 词法分析,语法分析,中间优化,中间代码优化,汇编代码生成(.s文件)
3. 最后编译出来的可执行文件里面是什么?
除了机器代码还有什么?它们是怎么存放的?怎么组织的?
4. #include<stdio.h>是什么意思?意味着什么?
c语言库又是什么?它是怎么实现的?
5. 不同的编译器vc,gcc和不同的硬件平台x86,MIPS,ARM以及不同的操作系统,
最终编译出来的结果一样吗?为什么?
6. Hello World程序是怎么运行起来的?操作系统是怎么装载的?
它从哪儿开始执行?哪儿开始结束?mian函数之前发生了什么?结束又发生了什么?
7. printf是怎么实现的?它为什么可以有不定数量的参数?为什么能够在终端上输出字符串?
8. Hello World运行时,内存是怎么样子的?
2. 关于上面这些问题
上面这些问题都是我一个字一个字的手写上来的,因为我准备写第一篇这本书博客的时候,我发现,唉!这些问题我还没有一个很好的答案呢,ok,那就把这段话抄上来吧!
中间会将其中问题进行解答,本系列博客的最后一篇博客也会一一解答,作为结束!
博客里面所有的内容也是一个字一个字写的哟!
3. 一起学习吧!
当你看到这些问题还模糊不清的话,那我们就一起来学习俞甲子、石凡和潘爱民编写的这本<程序员的自我修养-连接、封装与库>吧
这是我第二遍详细的看这本书了,我将从我的角度(一个程序员小兵的角度)把这本书里面的精髓总结并通俗易懂的记录在这里。
那就一起学习吧!