CH10 代码优化和目标代码生成.pdf
文本预览下载声明
S.P
词法分析程序
符 语法分析程序
错
号
表 语义分析、生成中间代码 误
处
管
理 代码优化 理
目标代码生成
O.P
编译原理 2017年5月7 日
第10章 代码优化和目标代码生成
二者在编译程序中的逻辑位置
基本块、流图和循环
数据流分析基础
基本块的DAG 表示(局部优化技术)
目标代码生成技术
代码优化技术
编译原理 2017年5月7 日
二者在编译程序中的逻辑位置
词法分析
字符流 语法分析
单词流 语义分析和中间代码生成
语法分析树 机器无关的代码优化
中间表示 目标代码生成
优化的中间表示
目标代码
编译原理 2017年5月7 日
10.1 基本块(basic block)
概念
• 程序中一个顺序执行的语句序列
• 只有一个入口语句和一个出口语句
• 除入口语句外其他语句均不可以带标号
• 除出口语句外其他语句均不可能是转移或停语句
入口语句
• 程序的第一个语句;或者
• 条件转移语句或无条件转移语句的转移目标语句;或者
• 紧跟在条件转移语句后面的语句
编译原理 2017年5月7 日
划分基本块的方法
针对三地址码 (TAC )
步骤
• 求出TAC 程序之中各个基本块的入口语句
• 对每一入口语句,构造其所属的基本块。它是由该语句
到下一入口语句(不包括下一入口语句),或到一转移
语句(包括该转移语句),或到一停语句(包括该停语
句)之间的语句序列组成的
• 凡未被纳入某一基本块的语句,都是程序中控制流程无
法到达的语句,因而也是不会被执行到的语句,可以把
它们删除
编译原理 2017年5月7 日
举例
针对三地址码 (TAC ) *(1) read x
举例 右边TAC 程序可划 (2) read y
分成4 个基本块 *(3) r:=x mod
显示全部