欢迎来到天天文库
浏览记录
ID:52186785
大小:1.98 MB
页数:115页
时间:2020-04-02
《编译原理第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(
此文档下载收益归作者所有