编译原理代码优化.ppt
《编译原理代码优化.ppt》由会员分享,可在线阅读,更多相关《编译原理代码优化.ppt(59页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第八章第八章 代码优化代码优化8.1 什么是代码优化什么是代码优化8.2 局部优化局部优化8.3 循环优化循环优化8.4 数据流分析数据流分析第八章第八章 优化优化8.1 8.1 什么是代码优化什么是代码优化n1、优化:、优化:对程序进行各种等价变换,使变换后的程序能生成更有效的目标代码。优化可在编译的任何阶段进行,但最主要的一类优化是对中间代码进行优化。n2、常见的优化方式、常见的优化方式 删除多余运算(又称删除公共子表达式)代码外提:循环体中不变的运算提到循环体外 强度削弱:把乘法变成加法1/4/20232中南大学软件学院 陈志刚第八章第八章 优化优化 变换循环控制条件:目的是删除那些纯粹
2、为控制循环而设立的语句,因此又称删除归纳变量。合并已知量:对于那些编译时便可静态确定的运算结果事先运算出来,不必等到运行程序时再执行。复写传播:某些变量的值并未被改变,便赋给其他变量,则可直接引用原值本身。删除无用赋值:有些变量在赋值后并未引用,却又被重新赋值了,称为无用赋值(前面的赋值)1/4/20233中南大学软件学院 陈志刚第八章第八章 优化优化3、优化分类、优化分类n按阶段分:与机器无关的优化-对中间代码进行 依赖于机器的优化-对目标代码进行n根据优化所涉及的程序范围分成:(1)局部优化:在程序基本块内进行的优化。(2)循环优化:在程序循环体内进行的优化。(3)全局优化:在整个程序范围
3、内进行的优化。n优化工作 数据流分析(control-flow analysis)控制流分析(data-flow analysis)变换(transformations)1/4/20234中南大学软件学院 陈志刚第八章第八章 优化优化4、优化技术简介、优化技术简介 1.删除多余运算 2.循环不变代码外提 3.强度削弱 4.变换循环控制条件 5.合并已知量与复写传播 6.删除无用赋值例:例:P:=0 for I:=1 to 20 do P:=P+AI*BI1/4/20235中南大学软件学院 陈志刚第八章第八章 优化优化(1)P:=0(2)I:=1(3)T1:=4*I(4)T2:=addr(A)-
4、4(5)T3:=T2T1(6)T4:=4*I(7)T5:=addr(B)-4(8)T6:=T5T4(9)T7:=T3*T6(10)P:=P+T7(11)I:=I+1(12)if I=20 goto(3)(1)P:=0(2)I:=1(3)T1:=4*I(5)T3:=T2T1(8)T6:=T5T4(9)T7:=T3*T6(10)P:=P+T7(11)I:=I+1(12)if I=20 goto(3)(4)T2:=addr(A)-4(7)T5:=addr(B)-4(6)T4:=T11/4/20236中南大学软件学院 陈志刚第八章第八章 优化优化(1)P:=0(2)I:=1(4)T2:=addr(A)
5、-4(7)T5:=addr(B)-4(3)T1:=4*I(5)T3:=T2T1(6)T4:=T1(8)T6:=T5T4(9)T7:=T3*T6(10)P:=P+T7(11)I:=I+1(12)if I=20 goto(3)n(1)P:=0n(2)I:=1n(4)T2:=addr(A)-4n(7)T5:=addr(B)-4n(5)T3:=T2T1n(6)T4:=T1n(8)T6:=T5T4n(9)T7:=T3*T6n(10)P:=P+T7n(11)I:=I+1n(12)if I=20 goto(5)(3)T1:=4*I(3)T1:=T1+41/4/20237中南大学软件学院 陈志刚第八章第八章
6、优化优化(1)P:=0(2)I:=1(4)T2:=addr(A)-4(7)T5:=addr(B)-4(3)T1:=4*I(5)T3:=T2T1(6)T4:=T1(8)T6:=T5T4(9)T7:=T3*T6(10)P:=P+T7(11)I:=I+1(3)T1:=T1+4(12)if I=20 goto(5)(1)P:=0(2)I:=1(4)T2:=addr(A)-4(7)T5:=addr(B)-4(5)T3:=T2T1(6)T4:=T1(8)T6:=T5 (9)T7:=T3*T6(10)P:=P+T7(11)I:=I+1(3)T1:=T1+4(12)if =80 goto(5)(3)T1:=4
7、T1T11/4/20238中南大学软件学院 陈志刚第八章第八章 优化优化(1)P:=0(2)I:=1(4)T2:=addr(A)-4(7)T5:=addr(B)-4(3)T1:=4(5)T3:=T2T1(6)T4:=T1(8)T6:=T5T1(9)T7:=T3*T6(10)P:=P+T7(11)I:=I+1(3)T1:=T1+4(12)if T1=80 goto(5)(1)P:=0(4)T2:=addr(A)-4(7)T5:=addr(B)-4(3)T1:=4(5)T3:=T2T1(8)T6:=T5T1(9)T7:=T3*T6(10)P:=P+T7(3)T1:=T1+4(12)if T1=C
8、goto L2 (6)B:=B+1 (7)goto L1 (8)L2:write(A)(9)halt1/4/202312中南大学软件学院 陈志刚第八章第八章 优化优化1/4/202313中南大学软件学院 陈志刚第八章第八章 优化优化基本块的基本块的DAG表示及其应用表示及其应用DAG Directed Acyclic Graph 无环路有向图无环路有向图基本块的基本块的DAG是在结点上带有标记的是在结点上带有标记的DAG 叶结点叶结点 独特的标识符独特的标识符(名字名字,常数常数)标记标记 内部结点内部结点 运算符号标记运算符号标记 各个结点各个结点 附加标识符标记附加标识符标记1/4/202
9、314中南大学软件学院 陈志刚第八章第八章 优化优化用用DAG进行基本块的优化进行基本块的优化四元式四元式DAG结点结点0型:型:A:=B(:=,B,A)n1 A B1型型:A:=op B(op,B,A)n2 A op n1 B2型型:A:=B op C(op,B,C,A)n3 Aop n1 n2B Cn1n2n1n3n1n21/4/202315中南大学软件学院 陈志刚第八章第八章 优化优化1/4/202316中南大学软件学院 陈志刚第八章第八章 优化优化1/4/202317中南大学软件学院 陈志刚第八章第八章 优化优化1/4/202318中南大学软件学院 陈志刚第八章第八章 优化优化例:例:
10、1/4/202319中南大学软件学院 陈志刚第八章第八章 优化优化1/4/202320中南大学软件学院 陈志刚第八章第八章 优化优化1/4/202321中南大学软件学院 陈志刚第八章第八章 优化优化1/4/202322中南大学软件学院 陈志刚第八章第八章 优化优化1/4/202323中南大学软件学院 陈志刚第八章第八章 优化优化1/4/202324中南大学软件学院 陈志刚第八章第八章 优化优化1/4/202325中南大学软件学院 陈志刚第八章第八章 优化优化1/4/202326中南大学软件学院 陈志刚第八章第八章 优化优化1/4/202327中南大学软件学院 陈志刚第八章第八章 优化优化1/4
11、/202328中南大学软件学院 陈志刚第八章第八章 优化优化控制流程图控制流程图(流图):具有唯一首结点的有向图(流图):具有唯一首结点的有向图G=(N,E,n0)N:结点集:结点集 基本块集基本块集 E:有向边集:有向边集 n0:首结点:首结点 包含程序第一个包含程序第一个 语句的基本块语句的基本块8.3 循环优化1/4/202329中南大学软件学院 陈志刚第八章第八章 优化优化1/4/202330中南大学软件学院 陈志刚第八章第八章 优化优化1/4/202331中南大学软件学院 陈志刚第八章第八章 优化优化1/4/202332中南大学软件学院 陈志刚第八章第八章 优化优化1/4/20233
12、3中南大学软件学院 陈志刚第八章第八章 优化优化分析程序流图中结点间的关系分析程序流图中结点间的关系m DOM n 定义 在程序流图中在程序流图中,对任意两个结点对任意两个结点m和和n,如果从流图的首结点出发如果从流图的首结点出发,到达到达n的任意通路都的任意通路都要经过要经过m,则称则称m是是n的必经结点的必经结点,记为记为m DOM n (a,a MOD a)必经结点必经结点集集 定义 结点结点n的所有的所有必经结点必经结点的集合的集合,称为结点称为结点n的的必经结点集必经结点集,记为记为D(n).1/4/202334中南大学软件学院 陈志刚第八章第八章 优化优化例例:6 73 4 1 2
13、 3 5 7 6 1 2 1 2 1 2 1必经结点必经结点 必经结点集必经结点集D(1)=1D(2)=1,2D(3)=1,2,3D(4)=1,2,4D(5)=1,2,4,5D(6)=1,2,4,6D(7)=1,2,4,7 31/4/202335中南大学软件学院 陈志刚第八章第八章 优化优化循环的查找循环的查找循环的查找算法循环的查找算法回边:假设回边:假设 ab是流图中的一条有向边,如果是流图中的一条有向边,如果b DOM a,则,则称称 a b是流图中的一条回边。是流图中的一条回边。有向边有向边 ndnd是回边,组成的循环是由结点是回边,组成的循环是由结点d,结点,结点 n以及有以及有通路
14、到达通路到达 n而该通路不经过而该通路不经过 d的所有结点组成,并且的所有结点组成,并且d是该循是该循环的唯一入口结点。环的唯一入口结点。循环循环(结点序列的性质结点序列的性质)1.1.强连通的强连通的(任意两结点间任意两结点间,必有一条通路必有一条通路,且该通路上各且该通路上各结点都属于该结点序列结点都属于该结点序列)2.2.它们中间有且只有一个是入口结点它们中间有且只有一个是入口结点.1/4/202336中南大学软件学院 陈志刚第八章第八章 优化优化 8.4 数据流分析数据流分析1.活跃变量数据流方程活跃变量数据流方程2.到达到达-定值数据流方程定值数据流方程3.讨论讨论 数据流问题分类数
15、据流问题分类 路径路径 数据流方程解不唯一数据流方程解不唯一1/4/202337中南大学软件学院 陈志刚第八章第八章 优化优化活跃变量的数据流分析活跃变量的数据流分析所所谓谓活活跃跃变变量量就就是是它它的的当当前前值值还还将将被被引引用用(在在赋赋予予一一个个新新值值之之前前)。在在全全局局范范围围来来分分析析的的话话,一一个个变变量量是是活活跃跃的的,如如果果存存在在一一条条路路径径使使得得该该变变量量被被重重新新定定值值之之前它的当前值还要被引用。前它的当前值还要被引用。通通过过全全局局活活跃跃变变量量分分析析,识识别别出出其其当当前前值值不不再再活活跃跃(即即,它它的的值值已已经经死死了
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 代码 优化
限制150内