第09章中间代码优化精.ppt
《第09章中间代码优化精.ppt》由会员分享,可在线阅读,更多相关《第09章中间代码优化精.ppt(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第09章中间代码优化第1页,本讲稿共17页 优化的目标:优化的目标:优化的要求:优化的要求:优化的对象:优化的对象:深层循环和下标变量地址的计算深层循环和下标变量地址的计算 优化的种类:优化的种类:常表达式优化(合并常数项)常表达式优化(合并常数项)公共表达式优化(消除重复操作)公共表达式优化(消除重复操作)循环不变表达式外提循环不变表达式外提 削减运算强度等等削减运算强度等等 优化方法:优化方法:全局优化:全局信息全局优化:全局信息 局部优化:局部信息局部优化:局部信息第2页,本讲稿共17页基本块和程序流图基本块和程序流图 基本块:基本块:单入口单出口的程序段。单入口单出口的程序段。程序流图
2、:程序流图:以基本块为结点的有向图,有向边表示以基本块为结点的有向图,有向边表示 程序执行的流程。程序执行的流程。中间代码基本块的划分:中间代码基本块的划分:初始代码为第一个基本块的入口初始代码为第一个基本块的入口 遇转移性中间代码时,结束当前基本块,下一条遇转移性中间代码时,结束当前基本块,下一条 代码作为新基本块的入口代码作为新基本块的入口 遇标号性代码结束当前基本块,代码本身作为新遇标号性代码结束当前基本块,代码本身作为新 基本块的入口。基本块的入口。遇(遇(ASSIG,A,XASSIG,A,X)时,如果)时,如果X X为引用型形参时结为引用型形参时结 束当前块,并作为该块的出口。束当前
3、块,并作为该块的出口。第3页,本讲稿共17页基本块划分的例子基本块划分的例子B B1 1:(ASSIGN,1,Y)(ASSIGN,1,Y)B B6 6:(LABEL,L6):(LABEL,L6)B B2 2:(LABEL,L0):(LABEL,L0)(ADDI,X,Y,t3)(ADDI,X,Y,t3)(AND (AND,A,B,t)(GT,t3,0,t4)A,B,t)(GT,t3,0,t4)(JUMP0,t,L4)(JUMP0,t,L4)(JUMP0,t4,L8)(JUMP0,t4,L8)B B3 3:(ASSIGN,0,X):(ASSIGN,0,X)B B7 7:(SUBI,X,1,t5)(
4、SUBI,X,1,t5)(JUMP,L5 )(JUMP,L5 )(ASSIGN,t5,X)(ASSIGN,t5,X)B B4 4:(LABEL,L4):(LABEL,L4)(JUMP,L6)(JUMP,L6)(ASSIG,0,Y)(ASSIG,0,Y)B B8 8:(LABEL,L8):(LABEL,L8)B B5 5:(LABEL,L5):(LABEL,L5)(ASSIGN,0,Z)(ASSIGN,0,Z)(ADDI,X,1,t1)(ADDI,X,1,t1)(STOP)(STOP)(ASSIGN,t1,X)(ASSIGN,t1,X)(SUBI Y,1,t2)(SUBI Y,1,t2)(ASS
5、IGN,t2,Y)(ASSIGN,t2,Y)B B1 1B B2 2 B B4 4B B3 3B B5 5B B6 6B B8 8B B7 7程序流图例程序流图例第4页,本讲稿共17页常表达式局部优化常表达式局部优化 常表达式:常表达式:任何时候都取固定常数值的表达式任何时候都取固定常数值的表达式 处理思想:处理思想:针对每个基本块,如果一个多元式的两针对每个基本块,如果一个多元式的两 个分量的值已知,则计算其值,并删掉个分量的值已知,则计算其值,并删掉 相应的中间代码。相应的中间代码。原理:原理:常量定值表常量定值表ConstDefConstDef:(Var,Val)(Var,Val)。基本
6、块入口置基本块入口置ConstDefConstDef为空;为空;对当前多元式的分量利用对当前多元式的分量利用ConstDefConstDef表进行值代换;表进行值代换;新多元式新多元式形如(形如(,A,B,tA,B,t):如果如果A A和和B B是常数,是常数,则计算则计算A A B B的值的值v v,并将(,并将(t,vt,v)填入)填入ConsDefConsDef表。表。形如(形如(ASSIGASSIG,A,BA,B):如果如果A A是常数,则把(是常数,则把(B,AB,A)填入填入ConsDefConsDef表,若已有表,若已有B B项,只需修改其值;项,只需修改其值;否则从否则从Con
7、sDefConsDef中删除中删除B B的登记项。的登记项。第5页,本讲稿共17页常表达式局部优化的例子常表达式局部优化的例子源程序源程序 中间代码中间代码 ConstDef ConstDef 优化后的代码优化后的代码a:=1a:=1 (ASSIGN,1,a)(ASSIGN,1,a)(a,1)(a,1)(ASSIGN,1,a)(ASSIGN,1,a)b:=a+1b:=a+1 (ADDI,a,1,t1)(ADDI,a,1,t1)(a,1)(t1,2)(a,1)(t1,2)()(ASSIGN,t1,b)(ASSIGN,t1,b)(a,1)(t1,2)(b,2)(a,1)(t1,2)(b,2)(AS
8、SIGN,2,b)(ASSIGN,2,b)a:=xa:=x (ASSIGN,x,a)(ASSIGN,x,a)(t1,2)(b,2)(t1,2)(b,2)(ASSIGN,a,x)(ASSIGN,a,x)c:=b+5c:=b+5 (ADDI,b,5,t2)(ADDI,b,5,t2)(t1,2)(b,2)(t2,7)(t1,2)(b,2)(t2,7)()()(ASSIGN,t2,c)(ASSIGN,t2,c)(t1,2)(b,2)(t2,7)(c,7)(t1,2)(b,2)(t2,7)(c,7)(ASSIGN,7,c)(ASSIGN,7,c)第6页,本讲稿共17页常量表达式全局优化常量表达式全局优化
9、 思想:思想:可利用基本块外的常量信息进行优化。基本块可利用基本块外的常量信息进行优化。基本块 入口处的入口处的ConstDefConstDef不简单的定义为空,基本块出口不简单的定义为空,基本块出口 处的处的ConstDefConstDef还在后面的基本块中用到。还在后面的基本块中用到。问题:问题:计算入口处和出口处的常量定值集合。计算入口处和出口处的常量定值集合。方法:方法:用常量定值的数据流分析。用常量定值的数据流分析。计算四种集合:计算四种集合:in_c(Bi)in_c(Bi):在在BiBi块的入口处可用的常量定值之集。块的入口处可用的常量定值之集。out_c(Bi):out_c(Bi
10、):在在BiBi块的出口处可用的常量定值之集。块的出口处可用的常量定值之集。def_c(Bi):def_c(Bi):在在BiBi块内产生并且在块内产生并且在BiBi的出口处可用的出口处可用 的常量定值之集。的常量定值之集。kill_c(Bi):kill_c(Bi):被被BiBi块所杀死的常量定值之集。若块所杀死的常量定值之集。若BiBi 块有对块有对X X的赋值,则称的赋值,则称BiBi块将杀死块将杀死X X的常量定值。的常量定值。第7页,本讲稿共17页def_c(Bi)def_c(Bi)和和kill_c(Bi)kill_c(Bi)可以确定可以确定 out_c(Bi)=out_c(Bi)=(i
11、n_c(Bi)(in_c(Bi)kill_c(Bi)kill_c(Bi)def_c(Bi)def_c(Bi)in_c(Bi)=in_c(Bi)=jpre(i)jpre(i)out_c(B out_c(Bj j)应用应用in_c(Bi)in_c(Bi)可以对可以对BiBi进行常量表达式优化。进行常量表达式优化。常表达式全局优化原理:常表达式全局优化原理:对每一基本块对每一基本块BiBi求出求出in_c(Bi)in_c(Bi)集合,集合,其中其中in_c(Bin_c(B0 0)为空;为空;用用in_c(Bi)in_c(Bi)代替基本块代替基本块BiBi的的ConstDefConstDef;优化过程
12、同局部常表达式优化原理,优化过程同局部常表达式优化原理,第8页,本讲稿共17页x:=1x:=1y:=2y:=2z:=a+1z:=a+1z:=3z:=3u:=x+5u:=x+5w:=9w:=9b:=y-1b:=y-1z:=3z:=3k:=7k:=7m:=k+zm:=k+zn:=m+1n:=m+1b:=k+1b:=k+1d:=m+nd:=m+nl:=z+yl:=z+yd:=k+xd:=k+xx:=1x:=1y:=2y:=2z:=a+1z:=a+1z:=3z:=3u:=6u:=6w:=9w:=9b:=1b:=1z:=3z:=3k:=7k:=7m:=10m:=10n:=11n:=11b:=8b:=8d
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 09 中间 代码 优化
限制150内