编译原理课件CHAPTER 6(Code Optimization).ppt

编译原理课件CHAPTER 6(Code Optimization).ppt

ID:51593426

大小:260.50 KB

页数:48页

时间:2020-03-25

编译原理课件CHAPTER 6(Code Optimization).ppt_第1页
编译原理课件CHAPTER 6(Code Optimization).ppt_第2页
编译原理课件CHAPTER 6(Code Optimization).ppt_第3页
编译原理课件CHAPTER 6(Code Optimization).ppt_第4页
编译原理课件CHAPTER 6(Code Optimization).ppt_第5页
资源描述:

《编译原理课件CHAPTER 6(Code Optimization).ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Chapter6 CodeOptimization代码优化概述基本块与局部优化(Basicblocksandlocaloptimization)控制流分析(Control-flowanalysis)数据流分析与优化(Data-flowanalysisandoptimization)7/21/202116.1代码优化概述代码优化编译时刻为改进目标程序的质量而进行的各项工作质量的改进,包括提高目标程序的时间效率和空间效率7/21/202126.1代码优化概述代码优化进行的是等价变换优化不能改变程序对给定

2、输入的输出,也不能引起源程序原先不会出现的新错误变换所作的努力是值得的编译器优化源程序的额外开销应能从目标程序的运行中得到补偿7/21/202136.1代码优化概述代码优化的分类根据是否与机器相关与机器相关的优化1、在目标代码生成之后进行,针对的是目标代码2、内容:寄存器优化、多处理器优化、特殊指令优化、无用指令消除等7/21/202146.1代码优化概述与机器无关的优化1、在中间代码生成之后进行,针对的是中间代码2、与机器无关的优化更具有普遍意义,可以适用于多种物理机器的代码生成程序**重点讨论与

3、机器无关的优化7/21/202156.1代码优化概述根据优化范围局部优化(Localoptimization)——针对程序基本块循环优化(Loopoptimization)——针对循环体全局优化(Globaloptimization)——针对整个程序**重点讨论中间代码的上述三个层次的优化技术7/21/202166.1代码优化概述代码优化程序的结构:控制流分析数据流分析代码变换构建程序流图7/21/202176.1代码优化概述控制流分析:在程序流图的基础上,分析程序(中间代码形式)的控制流程,寻找循

4、环体数据流分析:进行数据流信息的收集,包括到达-定值、活跃变量与可用表达式等反映程序中变量值的获得和使用情况的数据流信息代码变换:在基本块内进行局部等价变换,并基于控制流分析和数据流分析所获得的信息进行等价变换,实现循环的优化和其他的全局优化7/21/202186.1代码优化概述代码优化示例(1)P:=0(2)I:=1(3)T1:=4*I(4)T2:=a-4(5)T3:=T2[T1](6)T4:=4*I(7)T5:=b-4(8)T6:=T5[T4](9)T7:=T3*T6(10)P:=P+T7(11

5、)I:=I+1(12)IfI<=20goto(3)7/21/202196.1代码优化概述1、删除多余运算(删除公共子表达式)(1)P:=0(2)I:=1(3)T1:=4*I(4)T2:=a-4(5)T3:=T2[T1](6)T4:=4*I(7)T5:=b-4(8)T6:=T5[T4](9)T7:=T3*T6(10)P:=P+T7(11)I:=I+1(12)IfI<=20goto(3)(3)、(6)计算出的值相等,可以将(6)变换为:T4:=T17/21/2021106.1代码优化概述2、代码外提将循

6、环不变运算(计算结果独立于循环次数的表达式)提到循环外面(4)、(7)外提(1)P:=0(2)I:=1(3)T1:=4*I(4)T2:=a-4(5)T3:=T2[T1](6)T4:=4*I(7)T5:=b-4(8)T6:=T5[T4](9)T7:=T3*T6(10)P:=P+T7(11)I:=I+1(12)IfI<=20goto(3)7/21/2021116.1代码优化概述3、强度削弱把强度大的运算换算成强度小的运算,如乘方变乘法,乘法变加法T1与I是线性关系,每次增4,可以将(3)外提,在(12)

7、前增加一条语句T1:=T1+4(1)P:=0(2)I:=1(3)T1:=4*I(4)T2:=a-4(5)T3:=T2[T1](6)T4:=4*I(7)T5:=b-4(8)T6:=T5[T4](9)T7:=T3*T6(10)P:=P+T7(11)I:=I+1(12)IfI<=20goto(3)7/21/2021126.1代码优化概述4、变换循环控制条件将(12)的I<=20变换成T1<=80(1)P:=0(2)I:=1(3)T1:=4*I(4)T2:=a-4(5)T3:=T2[T1](6)T4:=4*

8、I(7)T5:=b-4(8)T6:=T5[T4](9)T7:=T3*T6(10)P:=P+T7(11)I:=I+1(12)IfI<=20goto(3)7/21/2021136.1代码优化概述5、合并已知量与复写传播T1的值在编译时可以计算,得4,故(3)可变换为T1:=4T4等于T1,于是(8)可以改写为T6:=T5[T1](1)P:=0(2)I:=1(3)T1:=4*I(4)T2:=a-4(5)T3:=T2[T1](6)T4:=4*I(7)T5:=b-4(8)T6:

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

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

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