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

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

ID:51592832

大小:631.50 KB

页数:74页

时间:2020-03-25

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

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

1、第七章代码优化某些编译程序在中间代码或目标代码生成之后要对生成的代码进行优化。本章主要介绍:优化基本概念基本块内的局部优化基于循环的优化7.1优化概述什么是代码优化:对程序实施各种等价变换,使得变换后程序能生成高效率的目标代码。高效率的目标代码是指:目标代码占用的存储空间少目标代码运行时间短7.1优化概述1.等价原则:保证等价性。2.有效原则:有明显的效果。3.合算原则:较低的代价取得较好的优化效果。代码优化的原则7.1优化概述代码优化的种类:根据是否涉及具体的计算机分为:与机器有关的优化(优化工作

2、主要在目标代码级上进行)对寄存器的优化多处理机的优化特殊指令的优化等7.1优化概述与机器无关的优化(优化工作主要在中间代码级上进行)根据优化对象所涉及的程序范围分为:局部优化循环优化全局优化7.1优化概述局部优化是指局限于程序基本块范围内的一种优化。局部优化包括:合并已知量删除公共子表达式(删除多余的运算)删除无用赋值7.1优化概述循环优化是指对循环中的代码进行优化。循环优化包括:代码外提删除归纳变量强度削弱7.1优化概述是在整个程序范围内进行的优化,需进行数据流分析,花费代价很高。全局优化7.1优

3、化概述S=0;for(i=1;i<=20;i++)S=S+A[i]*B[i];优化处理例如设有一个计算两个向量内积的源程序段:7.1优化概述编译程序对其进行词法分析、语法分析、语义分析和中间代码的生成,得到如下一组三地址语句序列表示的中间代码:(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

4、)说明:=+I-1=addr(A)-1+Iaddr(A)-1T2地址计算的不变部分IT1地址计算的可变部分用T2[T1]表示数组元素的地址若一个机器字有四个字节,按字节编址:T1=4*IT2=addr(A)-4*1B1B27.1优化概述在上图所示的中间代码中,根据程序流向的特点,分为B1、B2两块:B1是循环体外的语句序列B2是可重复执行的循环体语句序列7.1优化概述1.删除公共子表达(删除多余运算)公共子表达式是指在一个基本块内计算结果相同的子表达式。对相同的子表达式只

5、在第一次出现时计算且仅计算一次,将重复计算的表达式删除。(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图B2中公共子表达式4*I出现在四元式(3)和(6)中,而从(3)到(6)之间没有对子表达式中的变量I重新赋值,因此T1=T4,第二个4*I是多余的运算,可以删去,将原四元式改为

6、:(6)T4=T1。7.1优化概述(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)B1B27.1优化概述2.代码外提代码外提是指将循环中的不变运算提到循环体前面。图B2中,四元式(4)T2=addr(A)–4……(7)T5=addr(B)–4(1)S=0(2)I=1(3)T1=4*I(4)

7、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)B1B27.1优化概述由于addr(A),addr(B)已知,T2,T5的值不随循环的执行而变化,因此将四元式(4),(7)提到B2前面,得到下图:(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、8)T6=T5[T4](9)T7=T3*T6(10)S=S+T7(11)I=I+1(12)ifI≤20goto(3)B1B27.1优化概述(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)B1B23.强度削弱强度削弱是指在不改变运算结果的前提下,将程序中执行时间长的运

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

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

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