一、编译程序
编译程序种类
- 诊断编译程序:便于诊断,效率不一定高
- 优化编译程序:代码效率优化
- 交叉编译程序:产生不同于宿主机(编译)的目标机(运行)代码
- 可变目标编译程序:针对不同平台可生成不同代码
编译与解释
- 编译统一进行翻译
- 解释一句句翻译执行
二、编译过程
编译的五个阶段
- 词法分析
任务:识别单词
原则:依据构词规则
描述工具:有限自动机 - 语法分析
任务:分解成语法单位
原则:依据语法规则
描述工具:上下文无关文法 - 中间代码产生
任务:初步翻译
原则:语义规则
三元式,四元式,树
以上三个阶段称为编译前端(包括优化中与目标机器无关的部分)
- 优化
任务:产生更高效代码
原则:程序等价变化规则 - 目标代码产生
任务:形成目标代码
依赖于硬件系统和机器指令的含义
三种形式:
- 绝对指令代码,可直接运行(机器语言)
- 可重新定位指令代码&