第10章(1)代码优化 ■简介 ■10.1基本块、流图和循环 ■10.3代码优化技术 ■10.3.2局部优化(重点) ■10.3.3循环优化(难点) ■作业 2025/4/2 课程目录国2125
2025/4/2 第10章(1)代码优化 ◼ 简介 ◼ 10.1 基本块、流图和循环 ◼ 10.3 代码优化技术 ◼ 10.3.2 局部优化(重点) ◼ 10.3.3 循环优化(难点) ◼ 作业 课程目录 1/25
什么是代码优化 p255 ■含义 ◆是指对程序进行各种等价变换,使得从变换 后的程序出发,能生成更有效的目标代码 ■ 编译的优化工作阶段 源代码前端.中间代码 代码产生 目标代码 中间代码优化 目标代码优化 ◆优化可在编译的各个阶段进行 :Y ◆最主要的一类优化是在目标代码生成之前,对 语义分析后的中间代码进行 2025/4/2 2/25
2025/4/2 什么是代码优化 p255 ◼ 含义 ◆是指对程序进行各种等价变换,使得从变换 后的程序出发,能生成更有效的目标代码 ◼ 编译的优化工作阶段 ◆优化可在编译的各个阶段进行 ◆最主要的一类优化是在目标代码生成之前,对 语义分析后的中间代码进行 前端 中间代码 代码产生 中间代码优化 目标代码优化 源代码 目标代码 2/25
优化的目的和原则 ■优化目的 ◆产生更高效的目标代码 ◆合理利用计算机资源 ■优化原则 ◆等价 不改变程序的运行结果 ◆高效 运行时间较短,占用存储空间较小 ◆合算—以较低的代价取得较好的优化效果 ◆例如优化算法虽然使最后生成的目标代码的 运行时间缩短,占用空间减少,但是若优化算 本身运行是浪费了过多的时间和空间,则从总 上说就不一定合算 2025/4/2 ☒D 3/25
2025/4/2 优化的目的和原则 ◼ 优化目的 ◼ 优化原则 ◆产生更高效的目标代码 ◆合理利用计算机资源 ◆等价——不改变程序的运行结果 ◆高效——运行时间较短,占用存储空间较小 ◆合算——以较低的代价取得较好的优化效果 ◆例如 优化算法虽然使最后生成的目标代码的 运行时间缩短,占用空间减少,但是若优化算 本身运行是浪费了过多的时间和空间,则从总 上说就不一定合算 3/25
■按阶段分成 优化的分类 ◆与机器无关的优化,对中间代码进行 ◆依赖于机器的优化,生成目标代码时进行 ■根据优化时所涉及的程序范围分成 ◆局部优化在基本块内部进行优化 ◆循环优化对循环中的代码进行优化 ◆全局优化大范围的优化,涉及整个程序 ■优化工作的基础 ◆控制流分析(data-flow analysis) ◆数据流分析(control-flow analysis) ◆变换(transformations) 2025/4/2 章节目录国区425
2025/4/2 ◼ 按阶段分成 优化的分类 ◼ 根据优化时所涉及的程序范围分成 ◆与机器无关的优化,对中间代码进行 ◆依赖于机器的优化,生成目标代码时进行 ◆局部优化 在基本块内部进行优化 ◆循环优化 对循环中的代码进行优化 ◆全局优化 大范围的优化,涉及整个程序 ◼ 优化工作的基础 ◆控制流分析(data-flow analysis) ◆数据流分析(control-flow analysis) ◆变换(transformations) 章节目录 4/25
10.1基本块、流图和循环p255 ■定义 ◆局限于基本块范围内的优化 ■主要内容 ◆基本块及流图 2025/4/2 章节目绿☒ 5/25
2025/4/2 10.1 基本块、流图和循环 p255 ◼定义 ◆局限于基本块范围内的优化 ◼主要内容 ◆基本块及流图 章节目录 5/25