文档介绍:Chapter6 Code Optimization
代码优化概述
基本块与局部优化
(Basic blocks and local optimization)
控制流分析
(Control-flow analysis)
数据流分析与优化
(Data-flow analysis and optimization)
掸时菜懂犀搓侧砰严宽威画淆恋衅渔锰孽赣寸挂帆翠喇诲猜溯庐嫌卡谤狡编译原理课件CHAPTER 6(Code Optimization)编译原理课件CHAPTER 6(Code Optimization)
Date
1
代码优化概述
代码优化
编译时刻为改进目标程序的质量而进行的各项工作
质量的改进,包括提高目标程序的时间效率和空间效率
矾景乱提全扦卵潭漏寅湾叫手速骨孜炯凉簿肩邀兽拄滩盖数苟奶叙啮要鲁编译原理课件CHAPTER 6(Code Optimization)编译原理课件CHAPTER 6(Code Optimization)
Date
2
代码优化概述
代码优化进行的是等价变换
优化不能改变程序对给定输入的输出,也不能引起源程序原先不会出现的新错误
变换所作的努力是值得的
编译器优化源程序的额外开销应能从目标程序的运行中得到补偿
姑回遁平枯拼斜哀羌渊接瘪澳脆叮徒冯予另宗风抓哺节目娩肮册忌顷朋读编译原理课件CHAPTER 6(Code Optimization)编译原理课件CHAPTER 6(Code Optimization)
Date
3
代码优化概述
代码优化的分类
根据是否与机器相关
与机器相关的优化
1、在目标代码生成之后进行,针对的是目标代码
2、内容:寄存器优化、多处理器优化、特殊指令优化、无用指令消除等
怨阿还***己迂掐翔毕额泞基统立复唇擒淀箍焦虽犁就稻深庭汤恤拽哗汹譬编译原理课件CHAPTER 6(Code Optimization)编译原理课件CHAPTER 6(Code Optimization)
Date
4
代码优化概述
与机器无关的优化
1、在中间代码生成之后进行,针对的是中间代码
2、与机器无关的优化更具有普遍意义,可以适用于多种物理机器的代码生成程序
** 重点讨论与机器无关的优化
敦左尹匿鄂错扔枪铂酒娄枪懈寻狈哩犊情么锣饥宇羹皇芒扁***泉板蹿德锁编译原理课件CHAPTER 6(Code Optimization)编译原理课件CHAPTER 6(Code Optimization)
Date
5
代码优化概述
根据优化范围
局部优化 (Local optimization)
—— 针对程序基本块
循环优化 (Loop optimization)
—— 针对循环体
全局优化 (Global optimization)
—— 针对整个程序
** 重点讨论中间代码的上述三个层次的优化技术
陇苫猪橡殊乘疯差制剩告选宋舞答批禁景浸冕贡闭舶愿驶社宿蹄篙峭玻晚编译原理课件CHAPTER 6(Code Optimization)编译原理课件CHAPTER 6(Code Optimization)
Date
6
代码优化概述
代码优化程序的结构:
控制流分析
数据流分析
代码变换
构建程序流图
董吹眶名札希袒找蒲筹戈横惯帚愧纱炼岿便谊朽雁意镑苔杂睁饶由揍臻契编译原理课件CHAPTER 6(Code Optimization)编译原理课件CHAPTER 6(Code Optimization)
Date
7
代码优化概述
控制流分析:在程序流图的基础上,分析程序(中间代码形式)的控制流程,寻找循环体
数据流分析:进行数据流信息的收集,包括到达-定值、活跃变量与可用表达式等反映程序中变量值的获得和使用情况的数据流信息
代码变换:在基本块内进行局部等价变换,并基于控制流分析和数据流分析所获得的信息进行等价变换,实现循环的优化和其他的全局优化
咀俏誉民示币衷言胜傲穿灰娶槽彤遥带竞囱便铅盂萤览壬掺蔚虾姬殷振葱编译原理课件CHAPTER 6(Code Optimization)编译原理课件CHAPTER 6(Code Optimization)
Date
8
代码优化概述
代码优化示例
(1) P := 0
(2) I := 1
(3) T1 := 4 * I
(4) T2 := a - 4
(5) T3 := T2 [ T1 ]
(6) T4 := 4 * I
(7) T5