第10章(1)代码优化 n简介 n10.1基本块流图和循环 n 10.3代码优化技术 n10.3.2局部优化(重点) n10.3.3循环优化(难点) n 数据流分析(不介绍) n 作业 2023/2/28 课程目录国②115
2023/2/28 第10章(1)代码优化 n 简介 n 10.1 基本块、流图和循环 n 10.3 代码优化技术 n 10.3.2 局部优化(重点) n 10.3.3 循环优化(难点) n 数据流分析(不介绍) n 作业 课程目录 1/15
什么是代码优化 p255 n含义 u等价变换,生成更有效的目标代码 n编译的优化工作阶段 源代码.前端中间代码代码产生目标代码 中间代码优化 目标代码优化 u优化可在编译的各个阶段进行 最主要的一类优化是在目标代码生成之前,对 语义分析后的中间代码进行 2023/2/28 国 2/15
2023/2/28 什么是代码优化 p255 n 含义 u 等价变换,生成更有效的目标代码 n 编译的优化工作阶段 u优化可在编译的各个阶段进行 u最主要的一类优化是在目标代码生成之前,对 语义分析后的中间代码进行 前端 中间代码 代码产生 中间代码优化 目标代码优化 源代码 目标代码 2/15
优化的目的和原则 n优化目的 u产生更高效的目标代码一一时间空间 u合理利用计算机资源一一指令寄存器 n 优化原则 u等价 不改变程序的运行结果 u 高效 运行时间较短,占用存储空间较小 u合算— 以较低的代价取得较好的优化效果 例如:优化算法生成目标代码运行时间缩短, 占用空间减少,但若优化算法本身运行是浪费 了过多的时间和空间,则不一定合算 2023/2/28 ☒2315
2023/2/28 优化的目的和原则 n 优化目的 n 优化原则 u 产生更高效的目标代码——时间 空间 u 合理利用计算机资源——指令 寄存器 u 等价——不改变程序的运行结果 u 高效——运行时间较短,占用存储空间较小 u 合算——以较低的代价取得较好的优化效果 u 例如:优化算法生成目标代码运行时间缩短, 占用空间减少,但若优化算法本身运行是浪费 了过多的时间和空间,则不一定合算 3/15
优化的分类 n按阶段分成 ù与机器无关的优化,对中间代码进行 u依赖于机器的优化,生成目标代码时进行 n根据优化时所涉及的程序范围分成 u局部优化在基本块内部进行优化 ù循环优化对循环中的代码进行优化 全局优化大范围的优化,涉及整个程序 n优化工作的基础 u控制流分析(data-flow analysis) u 数据流分析(control-f1 ow analysis) u变换(transformations) 2023/2/28 章节目绿☒ 4/15
2023/2/28 优化的分类 n 按阶段分成 n 根据优化时所涉及的程序范围分成 u 与机器无关的优化,对中间代码进行 u 依赖于机器的优化,生成目标代码时进行 u 局部优化 在基本块内部进行优化 u 循环优化 对循环中的代码进行优化 u 全局优化 大范围的优化,涉及整个程序 章节目录 4/15 n 优化工作的基础 u 控制流分析(data-flow analysis) u 数据流分析(control-flow analysis) u 变换(transformations)
例如下基本块 基本块的定义和性质p255 一(1)T1:=AB 入▣ (2)T2:=3/2 n基本块的定义 语句 (3)T3:=T1-T2 u是指程序中一顺序执行的 (4)X:=T3 语句序列,其中只有一个 (5)C:=2 入口语句和一个出口语句 (6)T4:=A*8 n基本块的性质 (7)T5:=18+℃ 出▣ (8)T6:=T4*T5 语句 (9)Y:=T6 基本块内的语句要么全执行, 要么全不执行,而不能只执行一部分 2023/2/28 D515
2023/2/28 基本块的定义和性质 p255 n 基本块的定义 u 是指程序中一顺序执行的 语句序列,其中只有一个 入口语句和一个出口语句 例如下基本块 (1)T1:=A*B (2)T2:=3/2 (3)T3:=T1-T2 (4)X:=T3 (5)C:=2 (6)T4:=A*B (7)T5:=18+C (8)T6:=T4*T5 (9)Y:=T6 入口 语句 出口 语句 n 基本块的性质 基本块内的语句要么全执行, 要么全不执行,而不能只执行一部分 5/15