编译原理第11章 代码优化.ppt

编译原理第11章 代码优化.ppt

ID:52186785

大小:1.98 MB

页数:115页

时间:2020-04-02

编译原理第11章 代码优化.ppt_第1页
编译原理第11章 代码优化.ppt_第2页
编译原理第11章 代码优化.ppt_第3页
编译原理第11章 代码优化.ppt_第4页
编译原理第11章 代码优化.ppt_第5页
资源描述:

《编译原理第11章 代码优化.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、编译原理之代码优化华东交通大学软件学院万仲保第11章代码优化优化技术简介局部优化控制流分析和循环优化数据流的分析与全局优化优化技术简介优化概念优化分类优化技术优化概念优化实质上是对代码进行等价变换,使得变换后的代码运行结果与变换前代码运行结果相同,而运行速度加大或占用存储空间少,或两者都有。优化可在编译的不同阶段进行,对同一阶段,涉及的程序范围也有所不同,在同一范围内,可进行多种优化。一般,优化工作阶段可在中间代码生成之后和(或)目标代码生成之后进行。优化分类按阶段分类与机器无关的优化依赖于机器的优化根据优化所涉及的程序范围分类局

2、部优化:是在只有一个入口、一个出口的基本程序块上进行的优化。循环优化:是对循环中的代码进行的优化。全局优化:是在整个程序范围内进行的优化。优化技术删除多余运算(删除公共子表达式)代码外提强度削弱变换循环控制条件合并已知量与复写传播删除无用赋值删除多余运算目的:在于使目标代码执行速度较快。示例:程序代码中间代码段删除多余运算的程序代码P:=0forI:=1to20doP:=P+A[I]*B[I]删除多余运算优化的中间代码(3)T1:=4*I(4)T2:=addr(A)-4(5)T3:=T2[T1](6)T4:=4*I(7)T5:=a

3、ddr(B)-4(8)T6:=T5[T4](9)T7:=T3*T6(10)P:=P+T7(11)I:=I+1(12)ifI<=20goto(3)(1)P:=0(2)I:=1B1B2(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)P:=P+T7(11)I:=I+1(12)ifI<=20goto(3)(1)P:=0(2)I:=1B1B2代码外提把循环不变运算,即其结果独立于循环执行次数的表达式,提到

4、循环的前面。使之只在循环外计算一次。示例代码外提示例(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)P:=P+T7(11)I:=I+1(12)ifI<=20goto(3)(1)P:=0(2)I:=1B1B2(3)T1:=4*I(5)T3:=T2[T1](6)T4:=T1(8)T6:=T5[T4](9)T7:=T3*T6(10)P:=P+T7(11)I:=I+1(12)ifI<=20goto(3)

5、(1)P:=0(2)I:=1(4)T2:=addr(A)-4(7)T5:=addr(B)-4B1B2强度削弱强度削弱的思想是把强度大的运算换算成强度小的运算。示例强度削弱示例(5)T3:=T2[T1](6)T4:=T1(8)T6:=T5[T4](9)T7:=T3*T6(10)P:=P+T7(11)I:=I+1(3’)T1:=T1+4(12)ifI<=20goto(3)(1)P:=0(2)I:=1(4)T2:=addr(A)-4(7)T5:=addr(B)-4(3)T1:=4*IB1B2(3)T1:=4*I(5)T3:=T2[T1]

6、(6)T4:=T1(8)T6:=T5[T4](9)T7:=T3*T6(10)P:=P+T7(11)I:=I+1(12)ifI<=20goto(3)(1)P:=0(2)I:=1(4)T2:=addr(A)-4(7)T5:=addr(B)-4B1B2变换循环控制条件变换循环控制条件,确保整个程序的运行结果不变。示例变换循环控制条件示例(5)T3:=T2[T1](6)T4:=T1(8)T6:=T5[T4](9)T7:=T3*T6(10)P:=P+T7(11)I:=I+1(3’)T1:=T1+4(12)ifT1<=80goto(3)(1)

7、P:=0(2)I:=1(4)T2:=addr(A)-4(7)T5:=addr(B)-4(3)T1:=4*IB1B2(5)T3:=T2[T1](6)T4:=T1(8)T6:=T5[T4](9)T7:=T3*T6(10)P:=P+T7(11)I:=I+1(3’)T1:=T1+4(12)ifI<=20goto(3)(1)P:=0(2)I:=1(4)T2:=addr(A)-4(7)T5:=addr(B)-4(3)T1:=4*IB1B2合并已知量与复写传播运算对象都是编码时的已知量,可在编译时计算出它的值。复写传播变换的做法是:在复写语句f

8、:=g后尽可能用g代表f。示例合并已知量与复写传播示例(5)T3:=T2[T1](6)T4:=T1(8)T6:=T5[T1](9)T7:=T3*T6(10)P:=P+T7(11)I:=I+1(3’)T1:=T1+4(12)ifT1<=80goto(

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

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

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