编译原理课件07代码优化.ppt

编译原理课件07代码优化.ppt

ID:51593419

大小:803.00 KB

页数:90页

时间:2020-03-25

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

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

1、1.掌握优化的基本概念第七章代码优化(1)什么是代码优化:对程序实施各种等价变换,使得变换后程序能生成高效率的目标代码。高效率的目标代码是指:目标代码占用的存储空间少目标代码运行时间短(2)代码优化的种类:根据是否涉及具体的计算机分为:与机器有关的优化(优化工作主要在目标代码级上进行)对寄存器的优化多处理机的优化特殊指令的优化等第七章代码优化与机器无关的优化(优化工作主要在中间代码级上进行)根据优化对象所涉及的程序范围分为:局部优化循环优化全局优化第七章代码优化局部优化是指局限于程序基本块范围内的一种优化。局部优化包括:合并已知量删除公共子表达式(删除多余

2、的运算)删除无用赋值第七章代码优化循环优化是指对循环中的代码进行优化。循环优化包括:代码外提删除归纳变量强度削弱第七章代码优化是在整个程序范围内进行的优化,需进行数据流分析,花费代价很高。全局优化第七章代码优化S=0;for(i=1;i<=20;i++)S=S+A[i]*B[i];(3)优化处理例如设有一个计算两个向量内积的源程序段:第七章代码优化编译程序对其进行词法分析、语法分析、语义分析和中间代码的生成,得到如下一组三地址语句序列表示的中间代码:第七章代码优化数组元素地址的计算数组指针10011005100910131017…1001100210031

3、004=+I*sizeof(数组元素)1001(1)S=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[T4](9)T7=T3*T6(10)S=S+T7(11)I=I+1(12)ifI≤20goto(3)说明:=+I*sizeof(数组元素)-1=addr(A)-1+I*4addr(A)-1T2地址计算的不变部分I*4T1地址计算的可变部分用T2[T1]表示数组元素的地址若一个机器字有四个字节,按字节编

4、址:T1=4*IT2=addr(A)-4*1B1B2在上图所示的中间代码中,根据程序流向的特点,分为B1、B2两块:B1是循环体外的语句序列B2是可重复执行的循环体语句序列第七章代码优化删除公共子表达(删除多余运算)公共子表达式是指在一个基本块内计算结果相同的子表达式。对相同的子表达式只在第一次出现时计算且仅计算一次,将重复计算的表达式删除。(1)S=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[T4](9)T7=T3*T6(10)S=S+T7(11)

5、I=I+1(12)ifI≤20goto(3)B1B2第七章代码优化图B2中公共子表达式4*I出现在四元式(3)和(6)中,而从(3)到(6)之间没有对子表达式中的变量I重新赋值,因此T1=T4,第二个4*I是多余的运算,可以删去,将原四元式改为:(6)T4=T1。(1)S=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[T4](9)T7=T3*T6(10)S=S+T7(11)I=I+1(12)ifI≤20goto(3)B1B2第七章代码优化代码外提代码外

6、提是指将循环中的不变运算提到循环体前面。图B2中,四元式(4)T2=addr(A)–4……(7)T5=addr(B)–4(1)S=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)S=S+T7(11)I=I+1(12)ifI≤20goto(3)B1B2第七章代码优化由于addr(A),addr(B)已知,T2,T5的值不随循环的执行而变化,因此将四元式(4),(7)提到B2前面,得到下图:(1)S=0(2)I=1(3)T1

7、=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)S=S+T7(11)I=I+1(12)ifI≤20goto(3)B1B2第七章代码优化(1)S=0I=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)S=S+T7(11)I=I+1(12)ifI≤20goto(3)B1B2强度削弱强度削弱是指在不改变运算结果的前提下,将程序

8、中执行时间长的运算替换成执行时间短的运算。对计算机上的二进制算术运

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

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

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