编译原理(王晓斌)第十二章.ppt
《编译原理(王晓斌)第十二章.ppt》由会员分享,可在线阅读,更多相关《编译原理(王晓斌)第十二章.ppt(52页珍藏版)》请在三一办公上搜索。
1、第十二章代码优化和目标代码生成,本章主要讨论以下两个问题:1.如何对中间代码进行优化;2.如何由优化后的中间代码生成有效和目标代码;,电子科技大学计算机科学与工程学院,一、优化的定义,第一节 局部优化,优化是一种等价的,有效的程序变换,等价不改变程序运行结果,有效时空效率要高,电子科技大学计算机科学与工程学院,二、不同阶段的优化,局部优化:在基本块内的优化全局优化:超越基本块,在基本块之间的优化,1.源程序阶段的优化:考虑DS和算法2.编译优化中间代码优化和目标代码优化,电子科技大学计算机科学与工程学院,中间代码优化局部优化和全局优化,三、划分基本块和构造程序流图,1.划分基本块,基本块是指程
2、序中的一段语句(四元式)序列。一个入口语句,即程序中该语句序列的第一个语句;一个出口语句,即该语句序列的最后一个语句;,(1)入口语句,紧跟在条件转向语句后的那个语句,程序的第一条语句,能由条件或无条件转向语句转移到的语句,(2)出口语句,转向语句,停止语句,电子科技大学计算机科学与工程学院,入口语句 入口语句 入口语句 入口语句 转向语句 停语句,(3)确定基本块,删除未被划入基本块的语句,电子科技大学计算机科学与工程学院,电子科技大学计算机科学与工程学院,(1)i:=m-1(2)j:=n(3)t1:=4*n(4)v:=at1(5)i:=i+1(6)t2:=4*i(7)t3:=at2(8)i
3、f t3v goto(9)(13)if i=j goto(23)(14)t6:=4*i(15)x:=at6,(16)t7:=4*i(17)t8:=4*j(18)t9:=at8(19)at7:=t9(20)t10:=4*j(21)at10:=x(22)goto(5)(23)t11:=4*i(24)x:=at11(25)t12:=4*i(26)t13:=4*n(27)t14:=at13(28)at12:=t14(29)t15:=4*n(30)at15:=x,B1,B2,B3,B4,B5,B6,例,2.构造流图,G=(N,E,n0),(1)基本块集即为结点集N;(2)含程序第一个语句的基本块为首结点
4、n0;(3)设Bi,Bj N,若满足下列条件之一,则Bi Bj,Bj 紧跟在Bi 之后,且Bi 的出口语句不是无条件转向或停止语句,Bi 的出口语句为转向语句,其转向点恰为Bj 的入口语,电子科技大学计算机科学与工程学院,电子科技大学计算机科学与工程学院,(1)i:=m-1(2)j:=n(3)t1:=4*n(4)v:=at1,(5)i:=i+1(6)t2:=4*i(7)t3:=at2(8)if t3v goto(5),(9)j:=j-1(10)t4:=4*j(11)t5:=at4(12)if t5v goto(9),(13)if i=j goto(23),(14)t6:=4*i(15)x:=a
5、t6(16)t7:=4*i(17)t8:=4*j(18)t9:=at8(19)at7:=t9(20)t10:=4*j(21)at10:=x(22)goto(5),(23)t11:=4*i(24)x:=at11(25)t12:=4*i(26)t13:=4*n(27)t14:=at13(28)at12:=t14(29)t15:=4*n(30)at15:=x,B1,B2,B3,B4,B5,B6,四、基本块内的优化,对于A:=OP B 或 A:=B OP C这样的语句,若B及C为常数,则编译时可以把它们计算出来,把值存放在临时单元中,相应的语句变成A:=T;,1.合并已知量,2.删除公共子表达式,也叫
6、删除多余运算;例如两条赋值语句A:=B+C*DU:=V-C*D中有两次C*D运算。只计算一次,将值存在临时单元中T第二个语句改为:U:=V-T,电子科技大学计算机科学与工程学院,4.删除死代码,例如四元式序列(p)A:=B+D(q)A:=M+N中没有对A的引用,则第一个赋值无用,可删除。,3.删除无用赋值,iF语句条件为定值,电子科技大学计算机科学与工程学院,F:=1I:=H*GC:=F+EJ:=D/4D:=F+3 K:=J+CB:=A*AL:=HG:=B-DL:=I-JH:=E,合并已知量,F:=1I:=H*GC:=1+EJ:=1D:=4K:=2+EB:=A*AL:=HG:=B-4L:=I-
7、1H:=E,删除公共子表达式;I:=E*G,删除无用赋值;,假定F,C,D和J在基本块外不再引用,可得结果:,B:=A*A G:=B-4 K:=2+EI:=E*G L:=I-1,电子科技大学计算机科学与工程学院,例1,(14)t6:=4*i(15)x:=at6(16)t7:=4*i(17)t8:=4*j(18)t9:=at8(19)at7:=t9(20)t10:=4*j(21)at10:=x(22)goto(5),(14)t6:=4*i(15)x:=at6(17)t8:=4*j(18)t9:=at8(19)at6:=t9(21)at8:=x(22)goto(5),优化后,例2,电子科技大学计算
8、机科学与工程学院,删除公共子表达式,第二节 全局优化,一、循环的定义,全局优化有很多种,本节只讨论循环优化;,如何找出程序中的所有循环?循环优化有哪些?,循环是程序流图中有唯一入口结点的强连通子图,入口结点:子图中满足下列条件的结点n:或者n是流图的首结点,或者在子图外有一结点m,它有一有向边mn引向结点n;,强连通子图:任意两个结点可互相连联通,电子科技大学计算机科学与工程学院,1,2,3,4,5,6,7,8,9,10,5,6,7,8,9,例:,电子科技大学计算机科学与工程学院,是循环,4,,不是循环,不是循环,二、循环的的查找,1.必经节点,从流图的首结点出发到达结点n的任一通路都必须经过
9、的结点d,称d为n的必经结点,记为d DOM n,流图的首结点是流图中任一结点的必经结点 即n0 DOM n,每个结点是它本身的必经结点,即n DOM n,必经结点集:流图中结点n的所有必经结点的集合,称为n的必经结点集,记为D(n),电子科技大学计算机科学与工程学院,1,2,3,4,5,6,7,8,9,10,D(1)=1D(2)=1,2D(3)=1,2,3D(4)=1,2,4D(5)=1,2,4,5D(6)=1,2,4,5,6D(7)=1,2,4,5,6,7D(8)=1,2,4,5,6,8D(9)=1,2,4,5,6,9D(10)=1,2,4,10,电子科技大学计算机科学与工程学院,必经结点
10、具有如下性质:自反性:即对任意结点n,有n DOM n传递性:若n1 DOM n2,n2 DOM n3,则n1 DOM n3反对称性:若n1 DOM n2,n2 DOM n1,则n1=n2,电子科技大学计算机科学与工程学院,2.回边,流图G=(N,E,n0)中的有向边nd,如果d是n的必经结点,即dD(n),则称nd为流图的一条回边。,54,95,102,电子科技大学计算机科学与工程学院,电子科技大学计算机科学与工程学院,若nd是流图G=(N,E,0)的一条回边,M是流图中有通路到达n而该通路不经过d的结点集,则集合 LOOP=n,dM组成了G的一个子图,称为由回边nd组成的循环。,该流图有三
11、条回边:1.回边54构成循环 5,4,6,7,8,92.回边95构成循环 9,5,6,7,83.回边102构成循环 10,2,3,4,5,6,7,8,9,3.由回边构成的循环,二、循环优化,1.代码外提,2.强度削弱,基本归纳变量,i有唯一定值,i:=i c同族归纳变量,j:=c1 i c2,变成j:=j c1 c,但j必须在循环外赋初值 j:c1*i c2,电子科技大学计算机科学与工程学院,3.删除归纳变量,即改用同族归纳变量作为判断条件例如将 i 10 改为 t3 100+t1因原来t3:=10*i+t1,而100 t1 即 10*10+t1,电子科技大学计算机科学与工程学院,电子科技大学
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 王晓斌 第十二
链接地址:https://www.31ppt.com/p-4993738.html