什么是代码优化优化技术简介课件.ppt
《什么是代码优化优化技术简介课件.ppt》由会员分享,可在线阅读,更多相关《什么是代码优化优化技术简介课件.ppt(87页珍藏版)》请在三一办公上搜索。
1、什么是代码优化优化技术简介,第十章代码优化,某些编译程序在中间代码或目标代码生成之后要对生成的代码进行优化。所谓优化,实质上是对代码进行等价变换,使得变换后的代码运行结果与变换前代码运行结果相同,而运行速度加大或占用存储空间少,或两者都有。优化可在编译的不同阶段进行,对同一阶段,涉及的程序范围也不同,在同一范围内,可进行多种优化,优化分类:,按阶段分,与机器无关的优化 对中间代码进行,依赖于机器的优化 对目标代码进行,根据优化所涉及的程序范围分成:(1)局部优化:(基本块)(2)循环优化:对循环中的代码进行优化(3)全局优化:大范围的优化优化工作 数据流分析 控制流分析,优化技术简介1.删除多
2、余运算2.循环不变代码外提3.强度削弱4.变换循环控制条件5.合并已知量与复写传播6.删除无用赋值,例:P:=0for:=1 to 20 do P:=P+A*B,(1)P:=0(2):=1(3)T1:=4*(4)T2:=addr(A)-4(5)T3:=T2T1(6)T4:=4*(7)T5:=addr(B)-4(8)T6:=T5T4(9)T7:=T3*T6(10)P:=P+T7(11):=+1(12)if=20 goto(3),1.删除多余运算2.循环不变代码外提,(1)P:=0(2):=1(3)T1:=4*(4)T2:=addr(A)-4(5)T3:=T2T1(6)T4:=4*(7)T5:=a
3、ddr(B)-4(8)T6:=T5T4(9)T7:=T3*T6(10)P:=P+T7(11):=+1(12)if=20 goto(3),(1)P:=0(2):=1(3)T1:=4*(5)T3:=T2T1(8)T6:=T5T4(9)T7:=T3*T6(10)P:=P+T7(11):=+1(12)if=20 goto(3),(4)T2:=addr(A)-4(7)T5:=addr(B)-4,(6)T4:=T1,3.强度削弱,(1)P:=0(2):=1(4)T2:=addr(A)-4(7)T5:=addr(B)-4(3)T1:=4*(5)T3:=T2T1(6)T4:=T1(8)T6:=T5T4(9)T
4、7:=T3*T6(10)P:=P+T7(11):=+1(12)if=20 goto(3),(1)P:=0(2):=1(4)T2:=addr(A)-4(7)T5:=addr(B)-4(5)T3:=T2T1(6)T4:=T1(8)T6:=T5T4(9)T7:=T3*T6(10)P:=P+T7(11):=+1(12)if=20 goto(5),(3)T1:=4*I,(3)T1:=T1+4,4.变换循环控制条件5.合并已知量与复写传播,(1)P:=0(2):=1(4)T2:=addr(A)-4(7)T5:=addr(B)-4(3)T1:=4*(5)T3:=T2T1(6)T4:=T1(8)T6:=T5T
5、4(9)T7:=T3*T6(10)P:=P+T7(11):=+1(3)T1:=T1+4(12)if=20 goto(5),(1)P:=0(2):=1(4)T2:=addr(A)-4(7)T5:=addr(B)-4(5)T3:=T2T1(6)T4:=T1(8)T6:=T5T1(9)T7:=T3*T6(10)P:=P+T7(11):=+1(3)T1:=T1+4(12)if T1=80 goto(5),(3)T1:=4,6.删除无用赋值,(1)P:=0(2):=1(4)T2:=addr(A)-4(7)T5:=addr(B)-4(3)T1:=4(5)T3:=T2T1(6)T4:=T1(8)T6:=T5
6、T1(9)T7:=T3*T6(10)P:=P+T7(11):=+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=80 goto(5),局部优化:基本块内的优化基本块:是指程序中一顺序执行的语句序列,其中只有一个入口语句和一个出口语句。入口语句:、程序的第一个语句;或者,、条件转移语句或无条件转移语句的转移目 标语句;或者、紧跟在条件转移语句后面的语句。,
7、划分基本块的算法:、求出四元式程序之中各个基本块的入口语 句。、对每一入口语句,构造其所属的基本块。它是由该语句到下一入口语句(不包括下 一入口语句),或到一转移语句(包括该 转移语句),或到一停语句(包括该停语 句)之间的语句序列组成的。、凡未被纳入某一基本块的语句,都是程序 中控制流程无法到达的语句,因而也是不 会被执行到的语句,我们可以把它们删除。,(1)P:=0(2):=1B1(3)T1:=4*(4)T2:=addr(A)-4(5)T3:=T2T1(6)T4:=4*(7)T5:=addr(B)-4(8)T6:=T5T4 B2(9)T7:=T3*T6(10)P:=P+T7(11):=+1
8、(12)if=20 goto(3),(1)read(C)(2)A:=0(3)B:=1(4)L1:A:=A+B(5)if B=C goto L2(6)B:=B+1(7)goto L1(8)L2:write(A)(9)halt,基本块的DAG表示,DAG Directed Acyclic Graph 无环路有向图,在一个有向图中,我们称任一有向边ninj(或表示为有序对(ni,nj)中的结点ni为结点nj的前驱(父结),结点nj为结点ni的后继(子结)。又称任一有向边序列n1n2,n2n3,nk1nk为从结点n1到结点nk的一条通路。如果其中n1=nk,则称通路为环路。该结点序列也记为(n1,n2
9、,nk)。,图中有向图的通路(n2,n2)和(n3,n4,n3)就是环路。如果有向图中任一通路都不是环路,则称该有向图为无环路有向图,简称DAG。,有向图就是一个DAG。在DAG中,如果(n1,n2,nk)是其中一条通路,则称结点n1为结点nk的祖先,结点nk为结点n1的后代。我们这一节中要用到的有向图,是一种其结点带有标记或附加信息的DAG:,1、图的叶结点,即无后继的结点,以一标识符(变量名)或常数作为标记,表示该结点代表该变量或常数的值。如果叶结点用来代表某变量A的地址,则用addr(A)作为该结点的标记。通常把叶结点上作为标记的标识符加上下标0,以表示它是该变量的初值。,2、图的内部结
10、点,即有后继的结点以一运算符作为标记,表示该结点代表应用该运算符对其后继结点所代表的值进行运算的结果。3、图中各个结点上可能附加一个或多个标识符,表示这些变量具有该结点所代表的值。,上述这种DAG可用来描述计算过程,又称描述计算过程的DAG。在以下的讨论中,我们简称DAG。,一个基本块,可用一个DAG来表示。下面列出各种四元式及相对应的DAG的结点形式。1、图中ni为结点编号2、结点下面的符号(运算符、标识符或常 数)是各结点的标记3、各结点右边的标识符是结点的附加标识符。,基本块的DAG表示与构造,DAG,结点,n1,A,B,n2 A,op,n1,B,n3 A,op,n1,n2,B,C,n1
11、,n2,n1,n3,n1,n2,用DAG进行基本块的优化,仅含0,1,2型四元式的基本块的DAG构造算法:首先,DAG为空。对基本块的每一四元式,依次执行:,DAG构造算法,、如果NODE(B)无定义,则构造一标记为B的叶结点并定义NODE(B)为这个结点;如果当前四元式是0型,则记NODE(B)的值为n,转4。如果当前四元式是1型,则转2(1)。如果当前四元式是2型,则:()如果NODE(1)无定义,则构造一标记为C的叶结点并定义NODE(C)为这个结点;()转2.(2)。,2、(1)如果NODE(B)是标记为常数的叶结点,则转2(3),否则转3.(1)。(2)如果NODE(B)和NODE(
12、C)都是标记为常数的叶结点,则转2.(4),否则转3.(2)。(3)执行op B(即合并已知量),令得到的新常数为P。如果NODE(B)是处理当前四元式时新构造出来的结点,则删除它。如果NODE(P)无定义,则构造一用P做标记的叶结点n。置NODE(P)=n,转4.。,(4)执行B op C(即合并已知量),令得到的新常数为P。如果NODE(B)或NODE(C)是处理当前四元式时新构造出来的结点,则删除它。如果NODE(P)无定义,则构造一用P做标记的叶结点n。置NODE(P)=n,转4。,3、(1)检查DAG中是否已有一结点,其唯一 后 继为NODE(B),且标记为op(即找公共子表 达式)
13、。如果没有,则构造该结点n,否则就 把已有的结点作为它的结点并设该结点为n,转4.(2)检查中DAG中是否已有一结点,其左后继 为NODE(B),其右后继为NODE(C),且标记为 op(即找公共子表达式)。如果没有,则构造该 结点n,否则就把已有的结点作为它的结点并设 该结点为n,转4.。,4、如果NODE(A)无定义,则把A附加在结点n上并令NODE(A)=n;否则先把A从NODE(A)结点上的附加标识符集中删除(注意,如果NODE(A)是叶结点,则其标记A不删除),把A附加到新结点n上并令NODE(A)=n。转处理下一四元式。而后,我们可由DAG重新生成原基本块的一优化的代码序列。,构造
14、以下基本块G的DAG。,T0:=3.14,T0:=3.14T1:=2*T0,T0:=3.14T1:=2*T0T2:=R+r,T0:=3.14T1:=2*T0T2:=R+rA:=T1*T2,T0:=3.14T1:=2*T0T2:=R+rA:=T1*T2B:=A,T0:=3.14T1:=2*T0T2:=R+rA:=T1*T2B:=AT3:=2*T0,T0:=3.14T1:=2*T0T2:=R+rA:=T1*T2B:=AT3:=2*T0T4:=R+r,T0:=3.14T1:=2*T0T2:=R+rA:=T1*T2B:=AT3:=2*T0T4:=R+rT5:=T3*T4,T0:=3.14T1:=2*T
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 什么是 代码 优化 技术 简介 课件
链接地址:https://www.31ppt.com/p-3680252.html