欢迎来到天天文库
浏览记录
ID:19877042
大小:572.50 KB
页数:66页
时间:2018-10-07
《第11章 代码优化》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、11.1优化技术简介11.2局部优化11.3控制流分析和循环优化第十一章代码优化9/15/2021111.1优化技术简介一、优化的原则1、等价原则优化后不改变原程序运行的功能。2、有效原则优化后产生的目标代码运行时间较短,占用空间较小。9/15/20212与机器无关的优化---中间代码优化。依赖于机器的优化---目标代码优化。二、优化阶段源代码中间代码目标代码中间代码优化目标代码优化9/15/20213三、优化分类(1)局部优化:(基本块)(2)循环优化:对循环中的代码进行优化(3)全局优化:在整个程序范围内的优化9/15/20214四、常用优化技术简介
2、1.删除多余运算2.循环不变代码外提3.强度削弱4.变换循环控制条件5.合并已知量与复写传播6.删除无用赋值9/15/20215例如:(假设数组元素占用空间为4个字节)P:=0forI:=1to20doP:=P+A[I]*B[I]1.删除多余运算(删除公共子表达式):目的:提高目标代码速度。9/15/20216(6)T4:=4*I(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:=1(3)T1:=4*I(4)T2:=add
3、r(A)-4(5)T3:=T2[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)(6)T4:=T1变址取数(1)P:=0(2)I:=1(3)T1:=4*I(4)T2:=addr(A)-4(5)T3:=T2[T1]9/15/20217目的:减少循环中代码总数。方法:把循环不变运算,即其结果独立于循环执行次数的表达式提到循环的前面,使之只在循环外计算一次。2、代码外提9/15/20218(1)P:=0(2)I:=1(3)T1:=4*I(4)T
4、2:=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:=1(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)(4)T2:=addr(A)-4(7)T5:=addr(B)-49/15/20219基本思想:把强度大的运算换算
5、成强度小的。例如:a)i*2=2*i=i+ib)0-1=-1c)f/2.0=f*0.53.强度削弱9/15/202110(1)P:=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:=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)-4(5)T3:=T2[T1](6)T4:=T1(8)T6:=T5[
6、T4](9)T7:=T3*T6(10)P:=P+T7(11)I:=I+1(12)ifI<=20goto(5)(3)T1:=4*I(3‘)T1:=T1+49/15/2021114、变换循环控制条件经过变换后,有些变量不被引用,可以从循环中删除。9/15/202112(1)P:=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:=T5[T4](9)T7:=T3*T6(10)P:=P+T7(11)I:=I+1(3’)T1:=T1+4(12)ifI<=20g
7、oto(5)(1)P:=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:=T5[T4](9)T7:=T3*T6(10)P:=P+T7(3’)T1:=T1+4(12)ifgoto(5)T1<=809/15/2021135、合并已知量与复写传播编码时的已知量—常数,可在编译时计算出它的值,这种变换称为合并已知量或常数合并。通过复制后没有再改变的值可以互相替换,不会改变程序的结果,这种变换称为复写传播。9/15/202114(1)P:=0(2)I:=1(
8、4)T2:=addr(A)-4(7)T5:=addr(B)-4(3)T1:=4*
此文档下载收益归作者所有