编译原理第十章优化PPT.pptVIP

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

优化对代码进行的变换必须遵守以下原则: 1. 等价原则: 经优化的代码执行结果不变; 2. 有效原则: 优化后 确实执行时间短、占用空间少; 3. 合算原则: 以较低的代价,换取较好的优化效果。 第十章 优 化 优化主要为两类:中间代码的优化(不依赖硬件) 目标代码的优化(依赖硬件) 本章讨论的优化主要指对中间代码进行等价的变换,使其成为执行效率更高的中间码。 P272 图10.1给出了代码优化的地位和结构。 10.1 概述 该语句段的中间代码见P274 图10.2 以下通过一个实例简介各种优化方法。 例见P273 中的C语言程序,以下为其部分语句: i=m-1; j=n; v=a[n]; While (1) { do i=i+1; while (a[i]v); do j=j+1; while (a[j]v); if (i=j) break; x=a[i]; a[i]=a[j]; a[j]=x; } x=a[i]; a[i]=a[n]; a[n]=x; i:=m-1; j:=n ; T1:=4*n; v:=a[T1]; i:=i+1;T2:=4*i;T3:=a[T2]; if T3v goto B2 j:=j-1;T4:=4*j;T5:=a[T4]; if T5v goto B3 if i=j goto B6 T6:=4*i; x:=a[T6]; T7:=4*i; T8:=4*j; T9:=a[T8]; a[T7]:=T9; T10:=4*j; a[T10]:=x; goto B2 T11:=4*i; x:=a[T11]; T12:=4*i; T13:=4*n; T14:=a[T13]; a[T12]:=T14; T15:=4*n; a[T15]:=x; B6 B2 B3 B5 B4 B1 每个数组元素占4个单元 一. 删除公共子表达式(多余运算) T6:=4*i; x:=a[T6]; T7:=4*i; T8:=4*j; T9:=a[T8]; a[T7]:=T9; T10:=4*j; a[T10]:=x; goto B2 B5 T6:=4*i; x:=a[T6]; T7:= T6; T8:=4*j; T9:=a[T8]; a[T7]:=T9; T10:= T8; a[T10]:=x; Goto B2 B5 变换为: 因为:B2中已有T2:=4*i,且在进入B5前未改变过T2; B3中已有T4:=4*j,且在进入B5前未改变过T4; 所以可将B5变换为: T6:=T2; x:=a[T6]; T7:= T6; T8:=T4; T9:=a[T8]; a[T7]:=T9; T10:= T8; a[T10]:=x; Goto B2 B5 二. 复写传播 T6:=T2; x:=a[T6]; T7:= T6; T8:=T4; T9:=a[T8]; a[T7]:=T9; T10:= T8; a[T10]:=x; Goto B2 B5 变换为: T6:=T2; x:=a[T2]; T7:= T2; T8:=T4; T9:=a[T4]; a[T2]:=T9; T10:= T4; a[T4]:=x; Goto B2 B5 因为:B2中已有T3:=a[T2],且在进入B5前未改变过T3; B3中已有T5:=a[T4],且在进入B5前未改变过T5; 所以可将B5变换为: T6:=T2; x:=T3; T7:= T2; T8:=T4; T9:=T5; a[T2]:=T5; T10:= T4; a[T4]:=T3; Goto B2 B5 三. 删除无用代码 T6:=T2; x:=T3; T7:= T2; T8:=T4; T9:=T5; a[T2]:=T5; T10:= T4; a[T4]:=T3; Goto B2 B5 对于如右图所示的B5,由于 X,T6,T7,T8,T9,T10 在程序中不再使用,因此可删除对这些变量的赋值语句。 a[T2]:=T5; a[T4]:=T3; Goto B2 对于B6 可以像B5一样作相应的优化变换: T11:=4*i;x:=a[T11]; T12:=4*i;T13:=4*n; T14:=a[T13]; a[T12]:=T14; T15:=4*n;a[T15]:=x; B6 变换为: T11:=T2;x:=a[T2]; T12:=T2;T13:=T1; T14:=a[T1]; a[T2]:=T14; T15:=T

文档评论(0)

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

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

版权声明书
用户编号:7065201001000004

1亿VIP精品文档

相关文档