第10章 优化.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文档。上传文档
查看更多
* 局部优化 开始, DAG 为空。 对基本块的每一四元式,依次执行: 1 . 如果 NODE ( B )无定义,则构造一标记为 B 的叶结点并 定义 NODE ( B )为这个结点; 如果当前四元式是 0 型,则记 NODE ( B ) 的值为 n ,转 4 。 如果当前四元式是 1 型,则转 2 ( 1 )。 如果当前四元式是 2 型,则: (I) 如果 NODE (1) 无定义,则构造一标记为 C 的叶结点并 定义 NODE (1) 为这个结点; (II) 转 2 ( 2 ) 4. 建立DAG的方法(仅讨论0、1和2型) * 局部优化 2 . ( 1 )如果 NODE ( B ) 是标记为常数的叶结点 ,则转 2 ( 3 ) , 否则转 3 ( 1 )。 ( 2 )如果 NODE ( B) 和 NODE ( C) 都是标记为常数的叶结 点,则转 2 ( 4 ),否则转 3 ( 2 )。 ( 3 )执行 op B (即合并已知量),令得到的新常数为 P 。如果 NODE ( B) 是处理当前四元式时新构造出来的结点,则 删除它。如果 NODE ( P) 无定义,则构造一用 P 做标记的叶结 点 n 。置 NODE ( P)=n ,转 4 。 ( 4 )执行 B op C (即合并已知量),令得到的新常数为 P 。如果 NODE ( B) 或 NODE ( C) 是处理当前四元式时新构造出 来的结点,则删除它。如果 NODE ( P) 无定义,则构造一用 P 做标记的叶结点 n 。置 NODE ( P)=n ,转 4 。 * 局部优化 3 . ( 1 )检查 DAG 中是否已有一结点,其唯一后继为 NODE ( B) ,且标记为 op (即找公共子表达式)。如果没有, 则构造该结点 n ,否则就把已有的结点作为它的结点并设该结 点为 n ,转 4 。 ( 2 )检查中 DAG 中是否已有一结点,其左后继为 NODE ( B) ,其右后继为 NODE ( C) ,且标记为 op (即找公共子 表达式)。如果没有,则构造该结点 n ,否则就把已有的结点 作为它的结点并设该结点为 n ,转 4 。 * 局部优化 4. 如果 NODE ( A) 无定义,则把 A 附加在结点 n 上并令 NODE ( A)=n ;否则先把 A 从 NODE ( A) 结点上附加标识符集中 删除 (注意,如果 NODE ( A) 是叶结点,则其标记 A 不删 除),把 A 附加到新结点 n 上并令 NODE ( A)=n 。转处理下一 四元式。 而后,我们可由 DAG 重新生成原基本块的一个优化的代码序 列。 * 局部优化 建立DAG图的方法(对上面算法的简单理解) 对基本块内每个四元式(op,B,C,A)进行如下操作: 1)看结点B有没有建立起来,无则建立该结点;(A:=B op C) 2)若四元式类型为0型,不做任何操作(即:A:=B) 若四元式类型为1型: (即:A:=OP B) 若四元式类型为2型: (即:A:=B OP C) 3)看有无结点A,无则把A附加在当前结点上;否则,从node(A)结点的附标中删去标记A,并把A附加在当前结点上(注:作为叶结点标记的A不删除)。 * 局部优化 1型: A:=OP B IF node(B).标记=常量 THEN /*叶*/ {执行OP B 得值P /*合并已知量*/ 若node(B)是当前四元式建立的,则删去B的前一个赋值。 查有无node(P)结点,没有就建立。} ELSE {查DAG图中是否有一结点,其后继为node(B),标记为OP,没有就建立。}; * 局部优化 2型: A:=B OP C 查DAG图中有无结点node(C) , 没有就建立; IF ( node(B).标记=常量) AND(node(C).标记=常量 ) {执行B OP C 得值P /*合并已知量*/ 若node(B), node(C)是当前四元式建立的,则删去其前一个赋值; 查有无结点node(P) , 若没有则建立结点P} ELSE {查DAG图中是否有一结点,其左后继为node(B)右后继为node(C),标记为OP,没有就建立}; * 局部优化 例如:为下列三地址代码程序段构造DAG. (1)T0:=3.14 (2) T1 :=2*T0 (3)T2:=R+r (4)A:= T1 *T

文档评论(0)

精品文库 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档