- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]compiler-chapter9
第九章机器无关的优化
陈林
南京大学计算机系
南京大学软件质量研究所
优化的主要来源
编译器只能通过一些相对低层的语义等价转换来编译器只能通过一些相对低层的语义等价转换来
优化代码;
冗余运算的原因
源程序中的冗余;
高级程序设计语言编程的副产品
比如比如A[A[ii][j]][j].ff = 00; A[A[ii][j]][j].kk = 11;中的冗余运算中的冗余运算;
语义不变的优化
公共子表达式消除公共子表达式消除
复制传播
死代码消除
常量折叠
2
优化的例子(1)
快速排序算法
3
优化的例子(2)
三地址代码三地址代码
4
QQuicksort的流图的流图
循环:
B
22
B
3
BB 、BB 、BB 、
2 3 4
B
5
5
全局公共子表达式
如果如果EE
在某次出现之前必然已经
被计算过,且
E的分量在该次计算之后一
直没有被改变,
那么那么EE的本次出现就是的本次出现就是一个个
公共子表达式
如果上一次E的值赋给了x,
例子见左边
且x的值至今没有被修改过,
那那么我我们就就可以使用以使用xx,,而 t7=4*i
不需要计算E ; t10 =4*j
不需要重新计算;
• 基本块内的公基本块内的公
共子表达式
6
全局公共子表达式的例子
右图右图
在B 、B 中计算了4*i和4*j
2 3
到达B 之前必然经过B 、、B ;;
55 22 33
t2、t4在赋值之后没有被改
变过,因此B5 中可直接使用
它们它们;;
t4在替换t8之后,B5 :a[t8]
和B3 :a[t4]又相同;
同样同样::
B 中赋给x的值和B 中赋给
5 2
t3的值相同;
B 中的a[t13]和B 中的a[t1]
6
原创力文档


文档评论(0)