第九章 机器无关优化
如果我们简单地把每个高级语言结构独立地翻译成为机器代码,那么会带来相当大的运行时刻的开销。本章讨论如何消除这样的低效率因素。
- 全局公共子表达式:一个重要的优化方法是寻找同一个表达式在两个不同基本块中的计算过程。
- 复制传播:一个复制语句 u = v 把一个变量 v 赋值给另一个变量 u。
- 代码移动:另一种优化方法是把一个计算过程移动到它所在的循环之外。
- 归纳变量:很多循环都有归纳变量。
- 数据流分析:一个数据流分析模式在程序的每个点上都定义了一个值。
- 基本块的数据流分析:因为数据流值在一个基本块内的传播过程通常很简单,所以数据流方程通常给每个基本块设置两个值,称为 IN 值和 OUT 值。
- 到达定值:到达定值数据流框架的数据流值是程序中的语句的集合。
- 活跃变量:另一个重要的数据流框架计算了在各个程序点上活跃的变量。
- 可用表达式:为了寻找全局公共子表达式,我们要确定各个程序点上的可用表达式。
- 数据流问题的抽象:常见的数据流问题,比如前面提到过的那些,都可以用一个通用的数学结构表达。
- 单调框架&#