第10章优化全解.ppt

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

§10.2 局部优化 2、构造基本块的DAG的算法 2)中间代码的三种形式: (0)A:=B (1)A:=op B (2)A:=B op C 或 A:=B[C] n1 B ,A n1 B A n2 op n2 C A n3 op n1 B * §10.2 局部优化 2、构造基本块的GAD的算法 (3)构造算法: ①开始,DAG为空 ②对基本块中每一条中间代码式,依次执行以下步骤: 步骤: 1、如果NODE(B)无定义,则构造一标记为B的叶结点并定义NODE(B)为这个结点: 如果当前代码是0型,则记NODE(B)的值为n,转4。 如果当前代码是1型,则转2(1)。 如果当前代码是2型,则(ⅰ)如果NODE(C)无定义,则构造一标记为C的叶结点并定义NODE(C)为这个结点,(ⅱ)转2(2)。 * §10.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。 * §10.2 局部优化 3、(1)检查DAG中是否已有一结点,其唯一后继为NODE(B)且标记为op(即找公共子表达式)。如果没有,则构造该结点n,否则就把已有的结点作为它的结点并设该结点为n。转4。 (2)检查DAG中是否已有一结点,其左后继为NODE(B),右后继为NODE(C),且标为op(即找公共子表达式)。如果没有,则构造该结点n,否则就把已有的结点作为它的结点并设该结点为n。转4。 * §10.2 局部优化 4、如果NODE(A)无定义,则把A附加在结点n上并令NODE(A)=n;否则先把A从NODE(A)结点上的附加标识符集中删除(注意,如果NODE(A)是叶结点,则其标记A不删除),把A附加到新结点n上并令NODE(A)=n。转处理下一条代码。 * §10.2 局部优化 例:试构造以下基本块G的DAG (1) T0:=3.14 (2) T1:=2*T0 (3) T2:=R+r (4) A:=T1*T2 (5) B:=A (6) T3:=2*T0 (7) T4:=R+r (8) T5:=T3*T4 (9) T6:=R-r (10) B:=T5*T6 * §10.2局部优化 例:试构造以下基本块G的DAG (1) T0:=3.14 (2) T1:=2*T0 (3) T2:=R+r (4) A:=T1*T2 (5) B:=A (6) T3:=2*T0 (7) T4:=R+r (8) T5:=T3*T4 (9) T6:=R-r (10) B:=T5*T6 n1 3.14 T0 2 ╳ n2 6.28 T1 n3 R n4 r n5 + T2 n6 * A , B ,T3 n7 - T6 ,T4 , T5 n8 * B * (1)T0:=3.14 (2)T1:=6.28 (3)T3:=6.28 (4)T2:=R+r (5)T4=T2 (6)A:=6.28*T2 (7)T5:=A (8)T6:=R-r (9)B:=A*T6 * (1)查找或构造操作数结点; (2)若操作数都是常数,合并已知量,查找或构造结果结点; (3)若操作数不全是常数,查找或构造内部结点; (4)把赋值号左端的标识符附加在结果结点上。 DAG的构造算法: * P306 3、B1 ╳ n1 B n2 C n3 * A n4 / D ,G n5 + E n6 2 n7 * F n8 * H n9 * F ,L ,M G:=B*C H:=G*G L:=H*G M:=L * P307 3、B2 n2 A n3 C n4 + D n1 3 ,B n5 * E n6 F n7 * G ,H ,I n8 + J n9 15 ,K n10 + L ,M D:=A+C E:=A*C G:=3*F J:=D+E L:=15+J M:=L * * * * * 第十章 优化 优化: 对程序进行各种等价变换,使得从变换后的程序出发,能生成更有效的目标代码。 注: (

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档