1 引言 1
1.1 优化的目的和必要性 1
1.2 局部优化与全局优化 1
1.3 优化的功能和举例 1
1.3.1 常数运算合并 2
1.3.2 公共子表达式节省 2
1.3.3 循环不变量运算外移 2
1.3.4 运算强度削减 4
1.3.5 简单存贮传递 5
1.3.6 数组元素地址计算优化 5
1.3.7 内部、基本外部函数优化 6
2 优化设计 7
2.1 分级优化 7
2.2 结构的确定 8
2.2.1 程序基本块 8
2.2.2 基本块间联络信息的确定 9
2.2.3 基本块级次的确定 11
2.2.4 基本块的向后直接优先块的确定 11
2.2.5 循环编号和循环层次的确定 11
2.2.6 循环入口块及后目标块的确定 12
3 优化的要求 13
3.1 源程序中间文本表示 13
3.2 优化要求及对源程序的限制 15
3.3 符号记法说明 18
4 控制流程 18
5 优化准备 23
5.1 程序分块、有向图的内部表示 23
5.2 级次的确定与级次表说明 29
5.3 直接优先块的查找 30
5.4 循环的查找、循环的标识与循环层次 32
5.5 循环的后目标块 33
6 数据分析 33
6.1 数组、变量的座标数和字位说明 33
6.2 运算对象的排序与常数运算的合并 36
6.3 嵌入语句函数 39
6.4 优化块中的引用,定义信息的收集 40
7 循环优化处理 42
7.1 循环内块的排列 42
7.2 公共子表达式节省 43
7.3 循环不变量运算外移 51
7.4 强度削减 52
7.5 存贮分配 54
8 全局优化 56