编译原理,清华大学,第2版_第11章代码优化素材.pptVIP

编译原理,清华大学,第2版_第11章代码优化素材.ppt

  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文档。上传文档
查看更多
3、查找循环的算法 假设有向边a→b是回边,则它组成的循环是由结点b、结点a以及有通路到达a而该通路不经过b的所有结点组成,并且b是该循环的唯一入口结点。 1 2 3 4 6 5 7 回边对应的循环结点: 6?6 7? 4 4?2 循环结点:{6} 循环结点:{7,4,5,6} 循环结点:{4,2,3,7,5,6} 循环优化:三种重要技术 代码外提:产生的结果独立于循环执行次数的表达式,放到循环前面。 强度削弱:把程序中执行时间较长的运算替换为时间较短的运算。 删除归纳变量 六、循环优化 (一)、代码外提 1、循环不变量定义 形如(s) A:=B op C四元式,若 (1)B、C为常量; (2)到达(s)点的B、C定值点均在循环外; (3)到达(s)点的B、C定值点虽在循环内,但只有一个定值点且已被标为循环不变运算。 则(s)为循环不变运算,A、B、C为循环不变量。 注:循环不变量不论循环执行多少次均始终保持不变,有可能外提到循环外,以提高运行速度。 2、循环不变量外提条件 a)该不变运算所在结点(基本块)必须是循环出口结点的必经结点或者该不变运算所定值的变量在循环出口之后是不活跃的; b)循环内不变运算所定值的变量只有唯一的一个定值点; c)外提循环不变运算(s)A:=B op C时循环内所有A的引用点必须且仅是(s)所能到达的。 A:=5 A:=3 B:=A B1 B2 B3 B4 B5 假定程序两次执行途径 分别为: B1,B2,B4,B5,出口后B=5 B1,B2,B3,B4,B5,出口后 B=3; 若A:=3外提,则上述两条 途径执行结果均为B=3。 注意:其原因就是B3不是 B4的必经结点,而且A在 出口是活跃的。 前提a示例 前提b示例 A:=5 A:=3 B:=A B1 B2 B3 B4 假定程序外提前执行途径为: B1,B2,B3,B4,B2,B4,出口后B=5; A:=5外提后执行相同的执行途径出口后B=3; 注意:A有两个定值点。 前提c示例 A:=5 B:=A+1 A:=2 B1 B2 B3 B4 假定程序外提前执行途径 为: B1,B2,B3,出口后B=6; A:=2外提后执行相同的执行途径出口后B=3; 注意:原因是B3当中引用的A值不仅B4中A的定值可到达,B1中A的定值也能到达。 3、外提算法基本思想 寻找符合循环不变量外提条件的不变运算,进行外提。并外提到前置结点。 4、前置结点 实行代码外提时,在循环入口结点前面建立一个新结点(基本块),即前置结点。 注:1)前置结点是唯一的,循环中外提的代码将全部放到前置结点中。 2)前置结点以循环入口结点为其唯一后继。 二、强度减弱与归纳变量删除 1、归纳变量定义 循环中变量I只有唯一的形如(s)I:=I+C的赋值,其中C为循环不变量,则称I为循环中基本归纳变量。 若变量J与基本归纳变量I可化为线性关系J:=C1*I+C2,其中C1、C2为循环不变量,则称J是与I同族的归纳变量。 2、强度减弱与归纳变量删除算法 a)利用循环不变运算信息,找出循环中基本归纳变量I; b)找出所有归纳变量J,并指出J与I的线性关系; c)强度减弱,将归纳变量算式化为自增赋值算式,并按原式计算初值,将自增赋值算式置于原基本归纳变量自增赋值算式之后; d)变换循环控制变量; e)删除对X的自增赋值四元式。 人有了知识,就会具备各种分析能力, 明辨是非的能力。 所以我们要勤恳读书,广泛阅读, 古人说“书中自有黄金屋。 ”通过阅读科技书籍,我们能丰富知识, 培养逻辑思维能力; 通过阅读文学作品,我们能提高文学鉴赏水平, 培养文学情趣; 通过阅读报刊,我们能增长见识,扩大自己的知识面。 有许多书籍还能培养我们的道德情操, 给我们巨大的精神力量, 鼓舞我们前进。 * * * * * * * 划分为四个基本块 (8) (9) (1) (2) (3) (4) (5) (6) (7) 主要是进行已知量合并、删除公共子表达式、删除无用赋值。 注:无用赋值有以下情形: (a)对某变量A赋值后,在程序中没有引用; (b)对某变量A赋值后,在引用前又重新赋值; (c)对某变量A进行自增赋值,且它仅仅被用在自增运算中。 对上面第一和第三种情况,应进行全局分析。 3、块内优化 1、DAG(有向无环图)定义 a)父子结点 若在一有向图中,结点ni有弧指向nj,则称ni是nj的父结点,nj是ni的子结点。 b)路径与环路 若在一有向图中,结点n1 n2 …… nk间存在有向弧n1?n2? ……? nk,则称n1 到nk之间存在一条

文档评论(0)

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

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

1亿VIP精品文档

相关文档