- 2
- 0
- 约1.99千字
- 约 15页
- 2018-03-14 发布于天津
- 举报
代码生成授课胡静.PPT
编译原理 代码生成 授课:胡静 编译器的结构 6.一个简单的代码生成器(cont.) 机器指令的格式如下: LD reg, mem ST mem, reg OP reg, reg, reg 7. 窥孔优化 虽然大部分编译器产品通过仔细的指令选择和寄存器分配来生成优质代码,但还有一些编译器使用下面的策略: 先生成原始的代码,而后对目标代码进行“优化”转换,提高目标代码的质量。 这里的优化不同于我们之前讲的优化,因为这种方法不能保证得到的代码在某一个数学量度下是最优的。 这种简单的转换可以有效的改善目标程序的运行时间和空间需求。 7.窥孔优化(cont.) 窥孔优化技术是一个简单有效、用于局部改进目标代码的技术。 在改进的时候检查目标指令的一个滑动窗口(即窥孔),并且只要有可能就在窥孔内用更快或更短的指令来替换窗口中的指令序列。 窥孔优化技术也可以用来提高中间表示形式的质量。 窥孔是程序上的一个小的滑动窗口。窥孔优化技术并不要求在窥孔内的代码一定是连续的。 窥孔优化的特点是每一次改进有可能产生新的优化机会。因此,可以多次扫描目标代码。 7.窥孔优化(cont.) 本节中,将给出下列具有窥孔优化特点的程序变换的例子: 冗余指令消除 控制流优化 代数化简 机器特有指令的使用 7.1 消除冗余的加载和保存指令 如果我们在目标程序中看到指令序列 LD R0,a ST a, R0 我们可以删除其中的保存指令。因为第一条指令已经保证了a的当前值被保存在寄存器R0中。 但是如果保存指令有一个标号,我们就不能保证加载指令总是在保存指令之前执行,因此不能删除这个保存指令。 换言之,为了保证这个转换是安全的,这两个指令必须在同一个基本块中。 7.2 消除不可达代码 一个紧跟在无条件转移之后的不带标号的指令可以被删除 比如为了调试的目的,一个大型程序中可能含有一些只有当变量debug等于1时才运行的代码片段。在中间表示形式中,这个代码看起来可能就像 if debug== 1 goto L1 goto L2 L1:print debugging information L2: 7.2 消除不可达代码(cont.) 一个显而易见的窥孔优化方法就是消除级联跳转指令。因此,不管debug的值是什么,上面的代码序列都会被替换成下面的形式: if debug!=1 goto L2 print debugging information L2: 如果debug在程序开始时被设置为0,常量传播优化将把这个序列转化为: if 0!=1 goto L2 print debugging information L2: 第一个语句的值总是true,因此这个语句可以被替换成goto L2 而后打印调试信息的语句变成了不可达语句,可以逐一被消除 7.3 控制流优化 简单的中间代码生成算法通常生成一些不必要的跳转指令,如下: 目标为无条件跳转指令的无条件跳转指令 到达条件跳转指令的无条件跳转指令 到达无条件跳转指令的条件跳转指令 7.3 控制流优化(cont.) 例如,我们可以把下面的序列进行转换: goto L1 …… L1: goto L2 转化为: goto L2 …… L1: goto L2 如果没有跳转到L1的指令,并且语句L1: goto L2之前是一个无条件跳转指令,就可以消除这个语句。 7.3 控制流优化(cont.) 例如,我们可以把下面的序列进行转换: if ab goto L1 …… L1: goto L2 转化为: if ab goto L2 …… L1: goto L2 7.3 控制流优化(cont.) 假设只有一个到达L1的跳转指令,且L1之前是一个无条件跳转指令,那么序列 goto L1 L1:if ab goto L2 L3: 转化为: if ab goto L2 …… L3: 7.4 代数化简和强度消减 代数恒等式也可以被窥孔优化器用于消除窥孔中类似于x = x +0或者x = x * 1这样的三地址指令。 类似的,强度消减转换也可以应用到窥孔中,把代价比较高的运算替换为目标机器上代价较低的等价运算。 用x*x代替x2。 用移位运算代替乘数(除数)为2的幂的计算。 用乘数为常量倒数的乘法代替除数为这个数的浮点除法。 Thanks for your time! Questions Answers 编译技术 出 错 处 理 语法分析程序 语义分析程序 目标代码生成程序 词法分析程序 中间代码生成程序 代码优化程序 表 格 管 理 编译技术
您可能关注的文档
最近下载
- 行者讲课脉法下篇.doc VIP
- (人教版)数学一年级上册寒假应用题“天天练”作业设计,含30份题组,附参考答案.doc
- 多参数监护仪技术参数和要求.doc VIP
- HL德國創新機能家電烤箱HL-840用户手册.pdf
- (高清!)2025年3月29日河北省事业单位联考C类《职测》真题及答案.pdf VIP
- ZORRO遥控器中文说明书.pdf
- 多参数监护仪技术参数.doc VIP
- 05R417-1 室内管道支吊架建筑工程图集 高清.docx VIP
- 2025届安徽省江南十校高三下学期第一次联考(一模)数学试题含答案.pdf VIP
- 三年级上册数学思维训练题30题,拓展孩子思维能力201123.pdf VIP
原创力文档

文档评论(0)