编译器 编译步骤

一.预编译

1.宏定义展开#define #include #indef
2.删除注释 ( /* *///
3.保留#pragma,给后续编译用
4.添加行号,方便追查

二.词法分析

通过 有限状态机算法把你写的字符串分割成一个个的记号token
对这些token进行简单的归类

三.生成抽象语法树

1.语法分析

把token流,按顺序输入语法分析器去解读,最终将我们希望表达的自然语义,构建成了一个逻辑上的计算机能识别,能执行,能遍历的结构–树状结构-----抽象语法树 。

2.语义分析

对整个语法树进行遍历,静态分析,把每个节点的表达式都标识类型,并且验证是否合法。

四.生成中间码

中间码就是ATS和汇编代码之间的一层。它不直接生成汇编,而是在中间码的设计里打平了平台和硬件的差异。

五.生成最终的汇编代码

1.目标代码生成

由中间码生成汇编码

2.目标代码优化

对汇编代码进行优化

你可能感兴趣的:(编译器 编译步骤)