C代码优化
代码优化
代码优化的目标 ■提高最终目标代码的运行效率(性能) 时间:运行的更快 空间:降低内存需求 保持源程序的语义
•代码优化的目标 提高最终目标代码的运行效率(性能) - 时间:运行的更快 - 空间:降低内存需求 • 保持源程序的语义
代码优化(续) 全局数据流分析技术 2021/2/11 《编译原理与技术》之代码优化 3
2021/2/11 《编译原理与技术》之代码优化 3 代码优化(续) - 全局数据流分析技术
全局数据流分析 到达基本块入口处 的相关数据流信息 IN[B] 基本块“产生” 的相关数据流信 GENB 基本块“注销” 的相关数据流信 KILLIBI 息 到达基本块出口 基本块 处的相关数据流 信息 OUT[B 2021/2/11 《编译原理与技术》之代码优化 4
2021/2/11 《编译原理与技术》之代码优化 4 •全局数据流分析 基本块 IN[B] OUT[B] KILL[B] GEN[B] 到达基本块入口处 的相关数据流信息 到达基本块出口 处的相关数据流 信息 基本块“产生” 的相关数据流信 息 基本块“注销” 的相关数据流信 息
全局数据流分析 ■数据流的“方向” 正向(向前)数据流:与控制流方向一致 前驱1 前驱2 OUT[B]由N[B]来计算 NB]则由B的所有前驱结 点的OUT来决定 基本块B 表示数据流信息交汇(合流)处 —→控制流 2021/2/11 数握 理与技术》之代码优化 5
2021/2/11 《编译原理与技术》之代码优化 5 •全局数据流分析 数据流的“方向” - 正向(向前)数据流:与控制流方向一致 - OUT[B]由IN[B]来计算 - IN[B]则由B的所有前驱结 点的OUT来决定 控制流 数据流 前驱1 前驱2 基本块B 表示数据流信息交汇(合流)处