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