编译原理课件_____第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文档。上传文档
查看更多
编译原理课件_____第10章_优化

2.回边 查找循环的方法:先应用必经结点集求出流图中回边,再利用回边找流图中循环。 回边:如果a→b是流图中的一条有向边且b DOM a,则称a→b是流图中的一条回边。 对任一流图G, 求出G中各结点的必经结点集, 即可求出流图的所有回边。求出所有回边后, 即可求出流图中的循环。 若有向边n→d是一回边,则由结点d, n以及有通路到达n,但该通路不经过d的所有结点组成一个循环。 * 第10章 代码优化 代码优化是指对代码进行等价变换,使得变换后的代码具有更高的时间效率和空间效率。代码优化分为:局部优化,循环优化,全局优化。 10.1 局部优化 局部优化是指对代码的每个线性部分所进行的优化,使得在这个线性部分只存在一个入口和一个出口,该线性部分称基本块。 10.1.1 基本块的划分方法 所谓基本块是指程序中顺序执行的语句序列,其中只有一个入口和一个出口。入口是该序列的第一个语句,出口是该序列的最后一个语句。对于每个基本块,执行时只能从入口进入,从出口退出。 对于给定的程序,先把它划分为一系列基本块,再在每个基本块内进行优化,这种优化为局部优化。划分基本块的关键是:准确定义入口和出口语句。 把四元式程序划分为基本块的算法: (1) 确定满足以下条件的入口语句: ①四元式序列的第一个语句; ②能由条件转移或无条件转移语句转移 到的语句; ③紧跟在条件转移语句后面的语句。 (2) 确定满足以下条件的出口语句: ① 下一个入口语句的前导语句; ② 转移语句;③ 停语句。 例如,考察下述三地址代码程序: (1) read X (2) read Y (3) R=X % Y (4) if R=0 goto(8) (5) X=Y (6) Y=R (7) goto(3) (8) write Y (9) halt 入口语句为(1)、(3)、(5)、(8) 10.1.2 基本块的DAG表示 DAG(Directed Acyclic Graph)是一有向无环图,可用于对基本块进行优化。基本块的DAG是结点带有下述标记或附加信息的DAG: (1)图的叶结点以一个变量名或常数作为标记,表示该变量或常数的值。如果叶结点用来表示一变量A的地址,则用addr(A)作为该结点的标记。通常把叶结点上的变量名加下标0,表示它是该变量的初值。 (2)图的内部结点以一个运算符作为标记,表示用该运算符对其直接后继结点的值进行运算的结果。 (3)图中各结点上可附加一个或多个变量名,表示这些变量都具有该结点所代表的值。 程序的每个基本块都由一系列四元式组成,而每个四元式都可用相应的DAG结点表示。不同四元式对应的DAG结点形式如下图所示。图中结点内的ni表示构造DAG过程中该结点的编号,结点下面的符号是该结点的标记,结点右面的符号是结点上的附加信息。 在DAG图中,除转移语句的结点右边可附加一语句位置外,其余结点的右边只允许附加标识符。除数组元素赋值的结点([ ]=)有三个后继外,其余结点最多只有两个后继。 利用DAG进行基本块优化的基本思想: 首先按基本块内的四元式顺序将所有四元式构造成一个DAG,然后按构造结点的次序将DAG还原成四元式序列。由于在构造DAG的同时已作了局部优化,因此最后得到的是优化了的四元式序列。 为构造DAG算法的需要,按四元式对应结点的后继结点个数将四元式分为四类(P282): (1) 0型四元式:A:=B (2) 1型四元式:有一个后继结点( A:=op B ) (3) 2型四元式:有两个后继结点( A:=B op C 或 A:=B[C] ) (4) 3型四元式:有三个后继结点(如A[B]:=C op D 或 A [B] :=C[D] ) 假定用大写字母表示四元式中变量名(或常数),用函数Node(A)表示A在DAG中的相应结点,其值为n或无定义,用n表示DA

文档评论(0)

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

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

1亿VIP精品文档

相关文档