在第15章中,我们讨论了代码生成,编译器后端的汇编,目标代码的联接。这些技术导致了正确但是没有最佳优化的代码:有很多冗余计算,寄存器,计算单元,现代微处理器缓存不高效的使用。本章介绍代码提升:专门用来生成良好(快速)代码的汇编阶段。如同 1.6.4 所述,代码提升通常被称为 optimization(优化),尽管很少存在绝对意义上的优化。
我们的研究将考虑简单的 peephole 优化,该优化在很小的指令窗口内“清理”生成的目标代码;local 优化,该优化为单独的代码块生成近乎最佳优化的代码;global 优化,该优化在整个 subroutine 级别进行激进的代码优化。我们不涉及进程间优化;感性起的读者可以参考本书的参考。此外,即使我们涉及的话题,我们更倾向于使得代码提升过程清晰而不是探讨其中的细节。大部分讨论将围绕单个 subroutine 的连续改进。这个扩展的示例允许我们说明几种关键形式的代码改进方法并且不会陷入到具体的细节中。
更详细的请看chapter17