第10章代码优化概要.pptxVIP

  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章代码优化概要

第10章 代码优化;代码优化的目标; 根据优化所涉及的程序范围,中间代码优化分为三类:;§10.1 基本块与程序控制流图;一、基本块; 根据基本块的定义,它是一个按顺序执行的代码序列,而且只能从它的唯一入口进入,从其唯一的出口退出,期间不发生任何分叉。; 1. 程序的第一个语句;或者, 2. 条件转移语句或无条件转移语句的转 移目标语句;或者 3. 紧跟在条件转移语句后面的语句。 ;划分基本块的步骤;例子;二、程序控制流程图(流图);一个控制流程图可表示成一个三元组: G=(N,E,n0) N:所有结点(基本块)集; E:所有有向边集; n0 :首结点。;有向边;例子:构造以下程序的流图;§10.2 局部优化;局部优化是指基本块内的优化。 对于一个给定的程序,可以把它划分为一系列的基本块。在各个基本块内分别进行优化。;一、局部优化种类;二、基本块的DAG表示;基本块的DAG表示;四元式对应的DAG结点形式;例子:构造以下基本块的DAG;三、用DAG实现基本块优化;(2) 利用公共子表达式,删除多余运算 对具有公共子表达式的所有四元式,只产生一个计算该表达式值的内部节点,把那些赋值的变量附加到该节点上。;(3) 删除无用赋值 如果某变量被赋值之后,随后又被赋新值,那么可删除对变量的前一个赋值。;n8;注意事项;DAG在基本块优化中的作用;例:试对基本块P (1)应用DAG进行优化, (2) 假定只有R、H在基本块出口是活跃的,写出优化后的四元式序列。;S0:=2 S1:=3/S0 S2:=T - C S3:=T + C R:=S0/S3 H:=R S4:=3/S1 S5:=T + C S6:=S4/S5 H:=S6*S2;S0:=2 S4:=2 S1:=1.5 S2:=T - C S3:=T + C S5:=S3 R:=2/S3 S6:=R H:=R*S2;S0:=2 S4:=2 S1:=1.5 S2:=T - C S3:=T + C S5:=S3 R:=2/S3 S6:=R H:=R*S2;§10.3 循环优化;循环就是程序中那些可能反复执行的代码序列。因为循环中的代码要反复执行,所以必须着重考虑循环的代码优化。 首先要找出程序中的循环,这就需要对程序的控制流程进行分析。 使用控制流程图对循环给出定义。;一、循环的性质;强连通;入口结点;定义:在程序流图中具有唯一入口结点的强连通子图。 ;三、循环的查找;必经结点:对任意两个结点d和n,若从首结点出发,到达n的各条通路都必须经过的结点d,称d为n的必经结点,记作 d DOM n。 必经结点集:n的全部必经结点的集合,记作D(n)。; 设结点n的父结点是 P1,P2,…,Pk,则: D(n)= {n} ∪ (∩ D(Pi)) 1≤i≤k;举例;循环的查找— 回边;查找循环算法;43;查找循环算法;四、循环优化;用例子初步理解优化措施;1.删除多余运算 (删除公共子表达式) 对于两个相同的表达式计算,若它的计算结果相同,则没必要重复的生成两条运算指令。 ;2.代码外提 把结果独立于循环执行次数的表达式提到循环的前面。 ;3.强度削弱 把强度大的运算换算成强度小的运算。如把乘法换算成加法。;;6.删除无用赋值;循环优化的一些基本概念;;循环不变运算;前置结点;代码外提的安全性;B1→B2→B4→B5;B1→B2→B3→B4→B2→B4→B5 ;B1→ B2’→ B2→B3→B4→B2→B4→B5;代码外提条件;归纳变量;强度削弱与删除归纳变量;(4)删除归纳变量。 基本归纳变量除了自身的递归定值外,往往只是作为循环控制和其他同族归纳变量的计算。 在强度削弱后,其他同族归纳变量在循环中的运算因转换成递归增加一个常量,与基本归纳变量无直接关系了。 因此只要将循环控制条件由依赖于基本归纳变量???换成依赖于它的同族归纳变量,此时基本归纳变量除了唯一的递归定值外,已别无用处,可删除。;64;65;66;67;§10.4 数据流分析与全局优化;数据流分析的作用

文档评论(0)

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

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

1亿VIP精品文档

相关文档