10第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第10章 代码优化

第10章 代码优化 10.1局部优化 10.1.1基本块的划分 10.1.1基本块的划分 10.1.1基本块的划分 10.1.2 基本块的优化技术 第10章 代码优化 10.1.3 基本块的DAG表示 10.1.3 基本块的DAG表示 10.1.3 基本块的DAG表示 10.1.3 基本块的DAG表示 10.1.3 基本块的DAG表示 10.1.3 基本块的DAG表示 10.1.3 基本块的DAG表示 10.1.3 基本块的DAG表示 10.1.3 基本块的DAG表示 10.1.3 基本块的DAG表示 10.1.5 基本块优化的实现 10.1.5 基本块优化的实现 10.2 循环内的优化 10.2.1 循环结构的定义 10.2.2循环的查找 第10章 代码优化 10.3.2 循环优化的实现 10.3.2 循环优化的实现 10.3.2 循环优化的实现 10.3.2 循环优化的实现 10.3.2 循环优化的实现 10.3.2 循环优化的实现 10.3.2 循环优化的实现 10.3.2 循环优化的实现 10.3.2 循环优化的实现 10.3.2 循环优化的实现 10.3.2 循环优化的实现 10.3.2 循环优化的实现 习题 不变表达式外提算法如下: 1)求出循环L中的所有不变表达式。 2)对求得的每个不变表达式S(如A=B 或A=OP 或A=B OP C),检查它是否满足以下条件1和2 ①a.S所在的结点是L的所有出口结点的必经结点。 b.A在L中其它地方未在定值 c.L中所有A的引用点只有S中A的定值才能到达。 ② A在离开L之后,不再是活跃的(即A在L的任何出口结点的后继结点的入口处不是活跃的),并且条件1)中的b和c成立。 3)按不变表达式求得的顺序,依次把符合(2)的条件1)或2)不变表达式S外提到L的前置结点中。如果S的运算对象(B或C)是在L中定值的,则只有当这些定值四元式都以外提到前置结点中时,才能把S也外提到前置结点中。 2、强度削弱 强度削弱优化技术是指将一种执行时间较长的运算用另一种需用较少执行时间的运算来代替,从而达到提高目标程序执行效率的目的。 乘法运算代之以加法运算,则可节省时间。将计算X2的函数调用代之以花时间较少的乘法,即计算X*X。而正定点数的对于2的幂次方数的乘法和除法可通过移位操作来实现效率更高。 I=0; L1: J=I*4; I=I+1; IF I100 GOTO L1; I=0; J=-4; L1: J=J+4; I=I+1; IF I100 GOTO L1; 3、删除归纳变量 如果在循环L中对变量只有唯一的递归赋值I=I+C,其中C为循环不变量,则称I为循环中的基本归纳变量。 如果I是循环中的一个基本归纳变量,而变量J=C1*I+C2,其中C1、C2为循环不变量,则称J是归纳变量,且与I同族。一个基本归纳变量也是一个归纳变量, 如果循环中的某个变量,其值随着循环的每次重复都是增加或减少某个固定的量,则这个变量就是循环的归纳变量。 由于在执行循环时,同族的各归纳变量的值同步变化,那么,当同族的归纳变量有多个时,就可以删除一些归纳变量的计算,从而提高目标程序的效率。 例如,有程序代码如下,该程序流图如图10.11所示。 A=0; I=1; L1: B=J+1; C=B+I; A=C+A;; IF I=100 GOTO L2; I=I+1; GOTO L1; L2: … * 代码优化是指编译程序为了生成高质量的目标程序而做的各种加工和处理。而高质量的目标程序是指对同一源程序在运行时所占的内存空间较小,且在同一台机器上运行时间也较短的目标程序。代码优化并不能保证得到的目标代码是最优的,而只能是相对较优的。优化的原则是在编译阶段能计算的量绝不留到运行时刻去做,能在外层循环中计算的量绝不放到内层去做,能够共用存储单元(寄存器)的尽量共用。 优化可在编译的各个阶段进行,最主要的时机是在语法、语义分析生成中间代码之后,在中间代码上进行。这一类优化不依赖于具体的计算机,而取决于语言的结构。 局部优化:是指在只有一个入口和一个出口,且语句为顺序执行的程序段上所进行的优化。这种程序段,称为基本块。将基本块作为优化要考虑的主要范围为优化决策提供了基础,在一般情况下,将会产生更高质量的代码。 循环优化:是对循环语句所生成的中间代码序列所进行的优化处理,这类优化包括外提不变表达式、强度削弱和删除归纳变量。 全局优化:是在非线性程序段上的优化。因为程序段是非线性的,因此需要分析程序的控制流和数据流,处理比较复杂 局部优化是指局部范围内的优化。这个“局部范围”是指基本块,即只有一个入口和一个

文档评论(0)

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

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

1亿VIP精品文档

相关文档