网站大量收购闲置独家精品文档,联系QQ:2885784924

《编译原理》第章-中间代码优化.pptVIP

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

第九章 中间代码优化 引言 常量表达式优化 公共表达式优化 循环不变式外提 优化的目标: 优化的要求: 优化的对象:深层循环和下标变量地址的计算 优化的种类: 常表达式优化(合并常数项) 公共表达式优化(消除重复操作) 循环不变表达式外提 削减运算强度等等 优化方法: 全局优化:全局信息 局部优化:局部信息 基本块和程序流图 基本块:单入口单出口的程序段。 程序流图:以基本块为结点的有向图,有向边表示 程序执行的流程。 中间代码基本块的划分: ? 初始代码为第一个基本块的入口 ? 遇转移性中间代码时,结束当前基本块,下一条 代码作为新基本块的入口 ? 遇标号性代码结束当前基本块,代码本身作为新 基本块的入口。 ? 遇(ASSIG, A, X)时,如果X为引用型形参时结 束当前块,并作为该块的出口。 基本块划分的例子 常表达式局部优化 常表达式:任何时候都取固定常数值的表达式 处理思想:针对每个基本块,如果一个多元式的两 个分量的值已知,则计算其值,并删掉 相应的中间代码。 原理:常量定值表ConstDef:(Var,Val)。 ? 基本块入口置ConstDef为空; ? 对当前多元式的分量利用ConstDef表进行值代换; ? 新多元式形如(?,A, B,t):如果A和B是常数, 则计算A?B的值v,并将(t,v)填入ConsDef表。 形如(ASSIG,A, B):如果A是常数,则把(B,A) 填入ConsDef表,若已有B项,只需修改其值; 否则从ConsDef中删除B的登记项。 常表达式局部优化的例子 基于常量定值分析的常量表达式全局优化 思想:可利用基本块外的常量信息进行优化。基本块 入口处的ConstDef不简单的定义为空,基本块出口 处的ConstDef还在后面的基本块中用到。 问题:计算入口处和出口处的常量定值集合。 方法:用常量定值的数据流分析。 计算四种集合: in-c(Bi):在Bi块的入口处可用的常量定值之集。 out-c(Bi):在Bi块的出口处可用的常量定值之集。 def-c(Bi):在Bi块内产生并且在Bi的出口处可用 的常量定值之集。 kill-c(Bi):被Bi块所杀死的常量定值之集。若Bi 块有对X的赋值,则称Bi块将杀死X的常量定值。 基于相似性的公共表达式局部优化 相似多元式:设(?1,A1,B1,T1)和(?2 ,A2,B2,T2) 是两个非赋值型多元式,?1 = ?2,且A1和A2,B1 和B2的名字彼此相同,则称这两个多元式相似。 公共子表达式(可节省的公共代码ECC): di所定义的表达式在dk处是 可用的; UsableExpr:可用表达式集 等价表(PAIR):(ti,tj)表示ti和tj是等价的,需用tj 替换ti。 基于相似性的ECC优化算法 设UsableExp 和 PAIR 为空; 对当前多元式根据PAIR来进行等价替换,生成 NewTuple; 如果NewTuple 形如: dk:( ?, A, B, tk ): 若UsableExp 中存在相似表 达式di:(?, A, B, tj ),则删掉dk,并在PAIR 表中填入(tk,tj);否则dk不优化,把dk加到 UsableExpr中; dk:( ASSIG, A, B ):从UsableExpr删除含B的所 有可用表达式代码。 基于值编码的公共表达式局部优化 按值等价原理 优化思想: 对一个多元式的分量分别编码,具 有相同编码的分量等价。 值编码表ValuNnm: 可用表达式代码表UsableExpr 临时变量等价表TempEqua 基于值编码的ECC优化算法 入口处初始化:ValueNum,UsableExp和TempEqua为空。 对当前多元式用TempEqua等价替换,生成NewTuple. 如果NewTu

文档评论(0)

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

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

1亿VIP精品文档

相关文档