- 1、本文档共30页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十一章 代 码 优 化
11.1 概述
11.2 优化的例子
11.3 基本块的优化
11.4 循环优化
1
11.1 概述
经过前面各章所介绍的各个编译阶段,我们已经可
以把源程序变换成目标代码了,但这样生成的目标代码效
率未必是最高的。
代码优化(code optimization)
时间效率(减少运行时间)
目的:提高目标代码运行效率
空间效率(减少内存容量)
原则:进行优化必须严格遵循“不能改变原有程序语义”原则。
2
优化的分类:
★从优化的层次,与机器是否有关,分为:
独立于机器的优化:即与目标机无关的优化,通常是在中间代码上进
行的优化。
与机器有关的优化:充分利用系统资源(指令系统,寄存器资源)。
★从优化涉及的范围,又分为:
局部优化:是指在基本块内进行的优化。
循环优化:对循环语句所生成的中间代码序列上所进行的优化。
全局优化:顾名思义,跨越多个基本块的全局范围内的优化。因此它
是指在非线性程序段上(包括多个基本块, GOTO, 循环)
的优化。需要进行全局控制流和数据流分析,比较复杂。
3
[定义]基本块 (basic block )
满足以下三个条件的程序段,称为基本块:
只有一个入口和一个出口,且语句为顺序执行的程序段。
它使得所有转向该基本块的入口都是该基本块的第一条
语句。
如果块中任一语句被执行,则该块内的所有语句也将被
执行(无分支),且执行次数一样(无循环)。
4
例:一个FORTRAN语言例子
1. FACTOR = A( I ) + 2.0 * B( I )
基本块
1 ⊕ 2. EXP 1 = ABS( FACTOR )
2 ⊕ 3. IF ( KEY.NE.0 ) GO TO 10
3 ⊕ 4. BASE = 2.0
⊕ 基本块
4 ⊕ 10 5. FACTOR = FACTOR ** 2
5 ⊕ 6. GO TO 20
11
6 ⊕ ⊕ 10. BASE = 10.0
基本块
⊕ 11. FACTOR = SQRT( FACTOR )
20
20. Q = ( BASE ** EXP ) * FACTOR
21
文档评论(0)