程序的设计语言编译原理第三版第10章.pptVIP

程序的设计语言编译原理第三版第10章.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文档。上传文档
查看更多
第十章 优化;10.1 概述 10.2 局部优化 10.3 循环优化(略) 10.4 数据流分析(略);§10.1 概述;二、各个环节的优化;三、常用的优化技术;§10.2 局部优化;举例:考察下面的三地址代码程序;3.流图及其生成;4.基本块内的变换: (1)合并已知量 (2)临时变量改名 (3)变换语句的位置 (4)代数变换;二、基本块的DAG表示及其应用;例: 对下面基本块画出DAG图并进行分析: (1)T1:=4*i (2)T2:=a[T1] (3)T3:=4*i (4)T4:=b[T3] (5)T5:=T2*T4 (6)T6:=prod+T5 (7)prod:=T6 (8)T7:=i+1 (9)i:=T7 (10)if i=20 goto (1);基本块的DAG如下所示:;2.构造基本块的GAD的算法 (1)前提:假设DAG各结点信息将用某种适当的数据结构来存放 (例如链表) 标识符(包括常数)-结点 NODE(A)-描述上述对应关系的函数,其值或者是一个结点的编号, 或者无定义 (2)中间代码的三种形式:A:=B A:=op B A:=B op C 或 A:=B[C] (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 局部优化;3. (1)检查DAG中是否已有一结点,其唯一后继为NODE(B)且标记为 op(即找公共子表达式)。如果没有,则构造该结点n,否则就把 已有的结点作为它的结点并设该结点为n。转4。 (2)检查DAG中是否已有一结点,其左后继为NODE(B),右后继为 NODE(C),且标为op(即找公共子表达式)。如果没有,则构造 该结点n,否则就把已有的结点作为它的结点并设该结点为 n。转4。;§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;基本块G的DAG构造过程如图所示:; A,B * T2 + T0 T1,T3 3.14 6.28 R r; A,B,T5 * T2,T4 T6     — + T0 T1,T3 3.14 6.28 R r;按原来构造结点的顺序,把构造出的DAG重新写成中间代码: (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;谢谢!

文档评论(0)

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

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

1亿VIP精品文档

相关文档