第六章中间代码生成 许畅 南京大学计算机系 2022年春季 版权所有南京大学计算机科学与技术系许畅2022春季版
许畅 南京大学计算机系 2022年春季 第六章 中间代码生成 版权所有 南京大学计算机科学与技术系 许畅 2022春季版 南大编译许畅
本章内容 。中间代码表示 表达式的有向无环图DAG 三地址代码:x=y0叩z 。 类型检查 类型、类型检查、表达式的翻译 中间代码生成 控制流、回填 2
本章内容 • 中间代码表示 – 表达式的有向无环图DAG – 三地址代码:x = y op z • 类型检查 – 类型、类型检查、表达式的翻译 • 中间代码生成 – 控制流、回填 2 南大编译许畅
编译器前端的逻辑结构 前端是对源语言进行分析并产生中间表示 处理与源语言相关的细节,与目标机器无关 前端后端分开的好处:不同的源语言、不同的机 器可以得到不同的编译器组合 语法 静态检 中间代码 中间 代码 分析器 查程序 生成器 代码 生成器 前端 后端 图6-1一个编译器前端的逻辑结构
编译器前端的逻辑结构 • 前端是对源语言进行分析并产生中间表示 • 处理与源语言相关的细节,与目标机器无关 • 前端后端分开的好处:不同的源语言、不同的机 器可以得到不同的编译器组合 3 南大编译许畅
中间代码表示及其好处 形式 多种中间表示,不同层次 抽象语法树 三地址代码 重定位 为新的机器建编译器,只需要做从中间代码到新的目 标代码的翻译器(前端独立) 高层次的优化 优化与源语言和目标机器都无关 4
中间代码表示及其好处 • 形式 – 多种中间表示,不同层次 – 抽象语法树 – 三地址代码 • 重定位 – 为新的机器建编译器,只需要做从中间代码到新的目 标代码的翻译器 (前端独立) • 高层次的优化 – 优化与源语言和目标机器都无关 4 南大编译许畅
中间代码的实现 静态类型检查和中间代码生成的过程都可以用语 法制导的翻译来描述和实现 对于抽象语法树这种中间表示的生成,第五章已 经介绍过 语法 静态检 中间代码 中间 代码 分析器 查程序 生成器 代码 生成器 前端 后端 图6-1一个编译器前端的逻辑结构 5
中间代码的实现 • 静态类型检查和中间代码生成的过程都可以用语 法制导的翻译来描述和实现 • 对于抽象语法树这种中间表示的生成,第五章已 经介绍过 5 南大编译许畅