首先我们简单了解一下内存布局:
程序的编译分为:
1.预处理:主要处理源代码文件中的以“#”开始的预编译指令(经过预编译后的.i文件不包含任何宏定义,因为所有的宏已经被展开,并且包含的文件也已经被插入到.i文件中)
2.编译:将预处理完的文件进行一系列词法分析,语法分析,语义分析以及优化后产生相应的汇编代码文件(生成.s文件)
3.汇编:汇编器将汇编代码转变成机器可以执行的指令,每一个汇编语句几乎对应一条机器指令(生成.o/.obj文件)
.o/.obj文件的组成格式
可执行文件的组成格式:
注:可执行文件