Skip to content

编译原理

编译器将源程序转换为目标程序,并保持语言规定的可观察行为。前端识别结构与检查语义,中间表示承载分析和变换,后端把运算映射到指令、寄存器和运行时约定。编译正确性贯穿各阶段,优化则在正确性约束下改善代价。

目录

  1. 编译过程与程序表示
  2. 词法分析与有限自动机
  3. 上下文无关文法与语法分析
  4. 名字绑定、类型与运行时
  5. 控制流图与 SSA
  6. 数据流分析与程序优化
  7. 指令选择、调度与寄存器分配
  8. 编译正确性与实验

先修知识与约定

需要离散数学、数据结构、图算法和基本汇编知识。例子使用具有词法作用域的简化命令式语言;涉及整数溢出、浮点、异常或副作用时会说明语义限制。伪代码表达算法,不绑定某个编译器版本。

参考课程

MIT 6.035 Computer Language Engineering,2010 年春季教学大纲与讲次表涵盖词法、语法、中间表示、语义检查、代码生成、数据流分析、指令调度、寄存器分配和循环优化。

本讲义以这些主题为范围,补充 SSA、运行时和编译验证之间的联系。各章分别讨论表示、算法及其正确性条件,不把前端结束误当作编译过程结束。

上次更新: