编译原理简明教程(第3版)-课件 第8章 代码优化.pptx

编译原理简明教程(第3版)-课件 第8章 代码优化.pptx

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

新工科建设·计算机类系列教材;6;;;

定义

所谓优化,实质上是对代码进行等价变换,使得变换后的代码具有更高的效率,包括时间效率和空间效率。

目的

获得性能较好的代码,即要尽量缩小存储空间,还要尽量提高运行速度。;优化可在编译的不同阶段进行:

源代码设计阶段--程序员选择好的算法和语句

语义分析阶段--如何生成高质量的中间代码

中间代码--采用优化技术

目标代码--有效利用寄存器、指令、处理机

;;;1、合并常量运算

运算对象是常量或在编译时已知,则在编译时直接计算出结果,不必等到运行时再去计算。;优化前的四元式:

(1)(*,3.14,2,T1)

(2)(:=,T1,_,x)

(3)(*,2,5,T2)

(4)(*,T2,a,T3)

(5)(:=,T3,_,y)

(6)(+,x,0.5,T4)

(7)(:=,T4,_,z)

优化后:

(1) (:=,6.28,_,x)

(2)(*,10,a,y)

(3)(:=,6.78,_,z)

;

2、删除无用赋值

删除程序中对运行结果没有任何作用的赋值变量。

;优化前的四元式:

(1)(+,2,a,x)

(2)(+,2,b,y)

(3)(*,2,a,T1)

(4)(*,T1,b,x)

(5)(*,x,y,y)

优化后的四元式:

(1)(+,2,b,y)

(2)(*,2,a,T1)

(3)(*,T1,b,x)

(4)(*,x,y,y)

;3、削减运算强度(运算强度大→小)

;4、删除多余运算(或删除公共子表达式)

公共子表达式:重复使用两次以上的子表达式,且表达式中变量的值没有发生变化。

;优化前:

(1)(+,b,c,T1)

(2)(*,a,T1,T2)

(3)(+,T2,d,x)

(4)(+,b,c,T3)

(5)(*,a,T3,T4)

(6)(-,T4,d,y)

优化后:

(1)(+,b,c,T1)

(2)(*,a,T1,T2)

(3)(+,T2,d,x)

(4)(-,T2,d,y)

;5、外提不变表达式

不变表达式:循环中其值始终保持不变的表达式

;优化前的四元式:

(1)(:=,1,_,i)

(2)(=,i,100,T1)

(3)(BF,(11),T1,_)

(4)(+, a,b,T2)

(5)(+, c,d,T3)

(6)(*, T2,T3,T4)

(7)(*, T4,i,x)

(8)(+, x,i,y)

(9)(+, i,1,i)

(10)(BR,(2),_,_)

(11)( )

;优化后的四元式:

(1)(:=,1,_,i)

(2)(+,a,b,T1)

(3)(+,c,d,T2)

(4)(*,T1,T2,e)

(5)(=,i,100,T3)

(6)(BF,(11),T3,_)

(7)(*,e,i,x)

(8)(+,x,i,y)

(9)(+,i,1,i)

(10)(BR,(5),_,_)

(11)( )

;;;;;;;;;;;;;1、外提循环中的不变表达式;;;2、削减运算强度;;;3、删除归纳变量;;;;

文档评论(0)

balala11 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档