编译 第五章 中间代码优化

编译 第五章 中间代码优化

ID:27321132

大小:643.50 KB

页数:46页

时间:2018-12-02

编译 第五章  中间代码优化_第1页
编译 第五章  中间代码优化_第2页
编译 第五章  中间代码优化_第3页
编译 第五章  中间代码优化_第4页
编译 第五章  中间代码优化_第5页
资源描述:

《编译 第五章 中间代码优化》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、局部优化循环优化优化目的:提高运行速度,减少存储空间.第五章中间代码优化内容:第一节优化概述2右面为for循环的中间代码:PROD:=0;forI:=1to20doPROD:=PROD+A[I]*B[I]对该段中间代码,可以进行如下优化:1>删除多余运算见(3),(6)两四元式的4*I,(6)可以改写为:T4:=T1,从而减少了一次乘法.参见下页四元式表一维:i*w+base-low1*w(1)PROD:=0(2)I:=1(3)T1:=4*I(4)T2:=addr(A)-4(5)T3:=T2[T1](6)T4:=4*I(7)T5:=addr(B)-4(8)T6:=T5

2、[T4](9)T7:=T3*T6(10)PROD:=PROD+T7(11)I:=I+1(12)ifI<=20goto(3)3(1)PROD:=0(2)I:=1(3)T1:=4*I(4)T2:=addr(A)-4(5)T3:=T2[T1](6)T4:=T1(7)T5:=addr(B)-4(8)T6:=T5[T4](9)T7:=T3*T6(10)PROD:=PROD+T7(11)I:=I+1(12)ifI<=20goto(3)2>代码外提(4)与(7)每次循环其值都不变,称为循环不变量.可以放到循环前,减少循环中的运算.参见下页四元式表4(1)PROD:=0(2)I:=1

3、(4)T2:=addr(A)-4(7)T5:=addr(B)-4(3)T1:=4*I(5)T3:=T2[T1](6)T4:=T1(8)T6:=T5[T4](9)T7:=T3*T6(10)PROD:=PROD+T7(11)I:=I+1(12)ifI<=20goto(3)3>强度削弱由于每次循环I都增加1,因此,T1递增4,可把(3)改为T1:=T1+4,放在(11)之后,并在循环前对I赋初值T1:=4*I.(12)改为goto(5).参见下页四元式表5(1)PROD:=0(2)I:=1(4)T2:=addr(A)-4(7)T5:=addr(B)-4(3)T1:=4*I(

4、5)T3:=T2[T1](6)T4:=T1(8)T6:=T5[T4](9)T7:=T3*T6(10)PROD:=PROD+T7(11)I:=I+1(3’)T1:=T1+4(12)ifI<=20goto(5)4>变换控制条件由于I只用作循环控制,而T1=4*I,因此,可用T1替换I,I<=20等价于T1<=80,把(12)改为ifT1<=80goto(5)这样,可以删掉无用的I.参见下页四元式表6(1)PROD:=0(2)I:=1(4)T2:=addr(A)-4(7)T5:=addr(B)-4(3)T1:=4*I(5)T3:=T2[T1](6)T4:=T1(8)T6:=

5、T5[T4](9)T7:=T3*T6(10)PROD:=PROD+T7(3’)T1:=T1+4(12)ifT1<=80goto(5)5>合并已知量由于(3)中的I在(2)赋值后仍然为1,因此可改为:T1:=46>复写(6)中T1复制到T4,而(6)到(8)之间没有改变T1和T4,因此(8)可以改为:T6:=T5[T1],从而使(6)式无用.参见下页四元式表7(1)PROD:=0(2)I:=1(4)T2:=addr(A)-4(7)T5:=addr(B)-4(3)T1:=4(5)T3:=T2[T1](6)T4:=T1(8)T6:=T5[T1](9)T7:=T3*T6(10

6、)PROD:=PROD+T7(3’)T1:=T1+4(12)ifT1<=80goto(5)7>删除无用赋值(2)和(6)两四元式为无用四元式,可以删除.最终优化后,得到下页四元式表8(1)PROD:=0(4)T2:=addr(A)-4(7)T5:=addr(B)-4(3)T1:=4(5)T3:=T2[T1](8)T6:=T5[T1](9)T7:=T3*T6(10)PROD:=PROD+T7(3’)T1:=T1+4(12)ifT1<=80goto(5)(1)PROD:=0(2)I:=1(3)T1:=4*I(4)T2:=addr(A)-4(5)T3:=T2[T1](6)T

7、4:=4*I(7)T5:=addr(B)-4(8)T6:=T5[T4](9)T7:=T3*T6(10)PROD:=PROD+T7(11)I:=I+1(12)ifI<=20goto(3)优化前优化后9第二节局部优化局部优化是指局限于基本块内的优化.一基本块1>定义:基本块是一顺序执行的中间代码序列,仅包含一个入口四元式和一个出口四元式,第一条四元式为入口四元式,最后一条四元式为出口四元式.中间部分不含转移四元式.2>基本块的划分给定一四元式程序,可以通过如下算法,划分基本块:10基本块划分算法:1)求四元式程序中所有基本入口四元式,包括:a)程序的第一

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。