- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)