第10章(1)代码优化 简介 基本块 ■代码优化技术 局部优化(重点) ■3 循环优化(难点) 作业 实验 2025/4/2 课程目录②5
2025/4/2 第10章(1)代码优化 ◼ 简介 ◼ 基本块 ◼ 代码优化技术 ◼ 局部优化(重点) ◼ 循环优化(难点) ◼ 作业 ◼ 实验 课程目录 1/15
什么是代码优化 p255 ■含义 ◆等价变换,生成更有效的目标代码 ■编译的优化工作阶段 源代码前端中间代码.代码产生 .目标代码 中间代码优化 目标代码优化 :Y ◆优化可在编译的各个阶段进行 2025/4/2 ☒D 2/15
2025/4/2 什么是代码优化 p255 ◼ 含义 ◆等价变换,生成更有效的目标代码 ◼ 编译的优化工作阶段 ◆优化可在编译的各个阶段进行 前端 中间代码 代码产生 中间代码优化 目标代码优化 源代码 目标代码 2/15
优化的目的和原则 ■优化目的 ◆产生更高效的目标代码一一时间空间 ◆合理利用计算机资源一一指令寄存器 ■优化原则 ◆等价 不改变程序的运行结果 ◆高效一运行时间较短,占用存储空间较小 ◆合算 以较低的代价取得较好的优化效果 ◆例如:优化算法生成目标代码运行时间缩短, 占用空间减少,但若优化算法本身运行是浪费 了过多的时间和空间,则不一定合算 2025/4/2 3/15
2025/4/2 优化的目的和原则 ◼ 优化目的 ◼ 优化原则 ◆产生更高效的目标代码——时间 空间 ◆合理利用计算机资源——指令 寄存器 ◆等价——不改变程序的运行结果 ◆高效——运行时间较短,占用存储空间较小 ◆合算——以较低的代价取得较好的优化效果 ◆例如:优化算法生成目标代码运行时间缩短, 占用空间减少,但若优化算法本身运行是浪费 了过多的时间和空间,则不一定合算 3/15
优化的分类 ■按阶段分成 ◆与机器无关的优化,对中间代码进行 ◆依赖于机器的优化,生成目标代码时进行 ■根据优化时所涉及的程序范围分成 ◆局部优化在基本块内部进行优化 ◆循环优化对循环中的代码进行优化 ◆全局优化大范围的优化,涉及整个程序 2025/4/2 章节目绿)415
2025/4/2 优化的分类 ◼ 按阶段分成 ◼ 根据优化时所涉及的程序范围分成 ◆与机器无关的优化,对中间代码进行 ◆依赖于机器的优化,生成目标代码时进行 ◆局部优化 在基本块内部进行优化 ◆循环优化 对循环中的代码进行优化 ◆全局优化 大范围的优化,涉及整个程序 章节目录 4/15
例如下基本块 基本块的定义和性质p255 (1)T1:=A8 入▣ (2)T2:=3/2 语句 ■基本块的定义 (3)T3:=T1-T2 (4)X:=T3 ◆是指程序中一顺序执行的 语句序列,其中只有一个 (5)C:=2 入口语句和一个出口语句 (6)T4:=AB ■基本块的性质 (7)T5:=18+C 出口 (8)T6:=T4*T5 语句 (9)Y:=T6 基本块内的语句要么全执行, 要么全不执行,而不能只执行一部分 2025/4/2 D515
2025/4/2 基本块的定义和性质 p255 ◼ 基本块的定义 ◆是指程序中一顺序执行的 语句序列,其中只有一个 入口语句和一个出口语句 例如下基本块 (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 入口 语句 出口 语句 ◼ 基本块的性质 基本块内的语句要么全执行, 要么全不执行,而不能只执行一部分 5/15