代码提高了转换的标准.ppt

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

归纳变量删除算法(续) 最简单的情况是如果我们有三元组为(i1,c1,d1)的j1 与三元组为(i2,c2,d2)的j2,并且c1=c2和d1=d2,那 么,i1 relop i2等价于j1 relop j2。更复杂的情况是,测试 的替换可能是没有价值的,因为我们可能要引入两步乘和 一步加,而删除i1和i2只可能节省两步。 ???? 最后,当被删掉的归纳变量不再引用时,从循环中删去所 有对它的赋值。 2、现在,考虑由算法9.10(强度削弱用于归纳变量)引入语 句j:=s的每个归纳变量j。首先检查在引入的j:=s和任何 j的引用之间有没有对s赋值,通常是没有。j常常在它定值 的块中引用,这个检查可以简化;否则需要用到达--定值信 息和加上一些图的分析来实现这种检查。然后用引用s代替 所有j的引用,并删去语句j:=s。 有循环不变计算的归纳变量 在算法9.9(寻找归纳变量)与9.10(强度削弱用于归纳变量)中,我们允许用循环不变计算代替常量,那么归纳变量j的三元组(i,c,d)可能包含循环不变计算而不是常量。这些计算必须在循环L外的前置块完成。而且,因为中间代码要求每个语句至多一个算符,因此我们必须准备为这种表达式的计算产生中间代码语句。算法 9.11(归纳变量删除)的测试替换需 要知道乘法常量c的符号。基于这 一点,把注意力限制在c是已知常 数的情况是合理的。 可用表达式 几个概念: 表达式x+y在点P可用 如果从初始结点到P的每条路径上(不必是无环)都计算x+y,并且在 最后一个这样的计算与P之间没有对x或y的赋值,我们就说表达式x+y 在点P可用。 基本块注销表达式x+y 对可用表达式,如果它对x或y赋值(或可能赋值),并且随后没有重 新计算x+y,我们就说基本块注销表达式x+y。 基本块产生表达式x+y: 如果基本块计算x+y,并且随后没有重新定义x或y,我们就说基本块 产生表达式x+y。 可用表达式(续一) 可用表达式的基本应用是寻找公共子表达式 B1 B1 B2 B2 B3 B3 (a) (b) 如果4*i在B3的开始点可用,则块B3的表达式4*i是公共子表达式。这有 两种情况,一是B2没有对i赋值,另一种如图(b),B2中i的赋值后面又重新 计算4*i。 t1:=4*i t1:=4*i t1:=4*i t1:=4*i i:= t0:=4*i i:= t0:=4*I 可用表达式(续二) 计算基本块产生的可用表达式集合: 在块的开始点,假定无可用表达式,从头到尾扫 描块中所有语句,如果在p点可用表达式集合是A, q是p的下一点,p与q之间的语句是x:=y+z,那么q点 的可用表达式集合由下列两步计算: a、 把表达式y+z加入A。 ???? b、 删掉A中任何含x的表达式。 可用表达式(续三) 例: 语句 可用表达式 …… … none a:= b+c …… … only b+c b:=a-d …… … only a-d c:=b+c …… … only a-d d:=a-d …… … none 解析: ????1、开始可用表达式为空,第一条语句后,只有b+c可用。 ????2、第二条语句后,a-d可用,因为b的值改变,所以b+c不再可用。 ????3、第三条语句不能使b+c再次可用,因为c的值立即改变。 ????4、经最后一条语句,d的值改变,a-d也不再可用,语句本身也不能产生可用表达式,因为d的值立即改变,这样,没有可用表达式生成,包含a,b,c

文档评论(0)

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

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

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档