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