过程
源代码->预处理->编译->优化->汇编->链接->可执行文件
预处理
读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理
伪指令主要包括以下四个方面
(1)宏定义指令,如#define Name TokenString,#undef等
(2)条件编译指令,如#if,#ifdef,#ifndef,#else,#elif,#endif,等
(3)头文件包含指令,如#include "FileName"或者#include <FileName>等
(4)特殊符号,预编译程序可以识别一些特殊的符号
结果:经过预编译得到的输出文件中,将只有常量。如数字、字符串、变量的定义,以及C语言的关键字,如main,if,else,for,while,{,},+,-,*,\,等等。
编译阶段
编译程序所要作得工作就是通过词法分析和语法分析,在确认所有的指令都符合语法规则之后,将其翻译成等价的中间代码表示或汇编代码。
优化阶段
优化一种是对中间代码的优化。这种优化不依赖于具体的计算机。另一种优化则主要针对目标代码的生成而进行的。
汇编阶段
汇编过程实际上指把汇编语言代码翻译成目标机器指令的过程
链接阶段
链接程序的主要工作就是将有关的目标文件彼此相连接,也即将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,使得所有的这些目标文件成为一个能够诶操作系统装入执行的统一整体。
网友评论