一.预编译
1.宏定义展开
#define
#include
#indef
等
2.删除注释 (/* */
和//
)
3.保留#pragma
,给后续编译用
4.添加行号,方便追查
二.词法分析
通过
有限状态机算法
把你写的字符串分割成一个个的记号token
对这些token进行简单的归类
三.生成抽象语法树
1.语法分析
把token流,按顺序输入语法分析器去解读,最终将我们希望表达的自然语义,构建成了一个逻辑上的计算机能识别,能执行,能遍历的结构–树状结构-----抽象语法树 。
2.语义分析
对整个语法树进行遍历,静态分析,把每个节点的表达式都标识类型,并且验证是否合法。
四.生成中间码
中间码就是ATS和汇编代码之间的一层。它不直接生成汇编,而是在中间码的设计里打平了平台和硬件的差异。
五.生成最终的汇编代码
1.目标代码生成
由中间码生成汇编码
2.目标代码优化
对汇编代码进行优化