编译原理-代码优化.pptVIP

  1. 1、本文档共82页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理-代码优化

第十章 代 码 优 化;-优化的定义:对程序进行各种等价变换,使得变换后的代码运行结果与变换前代码运行结果相同,而运行速度加大,或占用存储空间减少,或两者都有。 空间效率和时间效率有时是一对矛盾,有时不能兼顾。 -三条优化原则 等价:是指不改变程序的运行结果; 有效:主要指优化后的目标代码运行时间较短,以及占用的存储空间较小。 合算:应尽可能以较低的代价取得较好的优化效果。;- 优化的时机;;变量的引用点和定值点 点:某一四元式的位置。 引用点(使用点):在该点使用了该变量。 如:表达式中的变量。 定值点(定义点):在该点变量被赋值或输入值。 如:赋值语句左部的变量。 例1: x := x + 1 ; 例2: x:=y+z称为对x定值并引用y和z。 ;基本块内的变换为局部优化。 基本块定义: 程序中一顺序执行的语句序列:其中只有一个入口语句(第一条语句),一个出口语句(最后一条语句)。 执行时只能从入口语句进入,从出口语句退出,中途没有停止或分枝。 例如: t1:=a * a t2:=a * b t3:=2 *t2 t4:=t1+t2 t5:=b * b t6:=t4+t5;一、基本块的划分?? 三地址语句序列=基本块表 1.入口语句: 采用如下规则确定: (a)代码序列的第一个语句。 (b)条件或无条件转移语句的转移目标语句。 (c)紧跟在无条件转移语句或条件转移语句后 面的语句。 ;算法:划分四元式程序形成基本块 ; 例: (1) read x (2) read y (3) r:=x mod y (4) if r=0 goto (8) (5) x:=y (6) y:=r (7) goto (3) (8) write y (9) halt; (1) P:=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)P:=P+T7 (11)I:=I+1 (12)if I<=20 goto(3);二.基本块的变换 1.删除公共子表达式 2.复写传播 3.删除无用代码 4.重新命名临时变量 5.交换语句次序 6.合并已知量;公共子表达式:①子表达式E先前已计算过。 ②且从上次计算到现在,E中的变 量的值没有改变。 优点:避免重复计算。 ;2.复写传播; (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)if I<=20 goto(5);3.删除无用代码 四元式t1:=x op y; t1不再被引用,则无用。 例如:①A:=B; … ;{未引用A} A:=C*D 则①A:=B;为无用代码,可删除 4.重新命名临时变量 例如: t:=b+c ?? u:=b+c ; (1) P:=0 (2) I:=1 (4) T2:=addr(A)-4 (7) T5:=addr(B)-4 (3) T1:=4 (5) T3:=T2[T1] (6) T4:=T1 (8) T6:=T5[T1] (9) T7:=T3*T6 (10)P:=P+T7 (11)I:=I+1 (3’)T1:=T1+4 (12)if T1<=80 goto(5);5.交换语句次序 目的:减少临时变量 例如:相邻两个语句 t1:=b+c ? t2:=x+y t2:=x+y ? t1:=b+c;6.合并已知量

文档评论(0)

2017meng + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档