翻译环境的细分
翻译环境的两个细分
编译(编译器)的3个细分
翻译环境的两个细分
相对于上一篇文章,这一篇的翻译环境更为细节;
首先,我们从下图可以看出,我将翻译环境细分为了两个部分,一个是编译(编译器),一个是链接(链接器)
如果再将编译这个环节拆解的更细分一些,我们可以得到下图
那么细分的每个环节他都需要做哪些工作呢?
-
预编译
(1)完成对头文件的包含;也就是将需要引用的头文件找到并包含起来,方便下面程序的使用
(2)注释的删除
(3)#define定义的符号的替换;也就是把程序中所有使用了这个符号的地方全部替换成#define定义的内容
小结:预编译(预处理)完成的基本都是文本类的相关操作;又或者说都是和预处理指令相关的操作 -
编译
(1)将c语言的代码翻译成汇编代码
(2)语法分析
(3)词法分析
(4)语义分析
(5)符号汇总 -
汇编
(1) 将汇编代码转换成目标文件test.obj;也就是将汇编代码转换成了可执行的二进制指令
(2)形成符号表 -
链接
(1) 合并段表
(2) 符号表的合并和重定位
有错误和不足之处还请大家批评和指正,希望通过这些知识可以让大家更好的了解程序的编译和执行;
知其根本,才能更好的理解和学习