![编译方法、技术与实践](https://wfqqreader-1252317822.image.myqcloud.com/cover/849/51730849/b_51730849.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.2.6 中间代码优化
基于中间代码的优化不需要考虑源语言与目标语言之间存在的差异,是独立于前端和后端进行优化的全部过程。一系列连续重写中间代码以消除效率低下和无法轻易转换为机器代码的代码片段的方法或函数构成了编译器的中间代码优化模块。不同编译器对优化管道及优化模块的执行顺序的设计都不同,这也导致了不同的优化效果与时空开销。
例如,对于中间代码:
![](https://epubservercos.yuewen.com/A141C7/30532542904512906/epubprivate/OEBPS/Images/21_03.jpg?sign=1739301409-ans2clO6G8YeZpSMaodTRe1kDW60UZ7k-0-e66202b95517317fb0e3931bbf9eb0c3)
![](https://epubservercos.yuewen.com/A141C7/30532542904512906/epubprivate/OEBPS/Images/22_01.jpg?sign=1739301409-bCIlxbbneTLA4CCMguChPSCPBvHKQQAL-0-c59081b1b7b3ae412fb6d534882273b4)
其进行子表达式消除与无用代码消除后的中间代码为:
![](https://epubservercos.yuewen.com/A141C7/30532542904512906/epubprivate/OEBPS/Images/22_02.jpg?sign=1739301409-lRiUxnFCWPf4lyShGMZXNCR9bES4bVmh-0-87bbf24ebba7d6d0bb1ca5fe0933eceb)
在第6章中,我们将讨论以下内容:
●数据流分析框架,中间代码优化器使用此框架作为优化算法的模板。
●数据流分析模式,优化器基于分析模式构造优化算法。
●中间代码优化各模块(常量传播、公共子表达式消除、无用代码消除、循环不变代码外提、归纳变量强度削减等)的实现技术。