译原理课件第8章-优化.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《译原理课件第8章-优化.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 原理 课件 优化
- 资源描述:
-
1、第八章第八章 代码优化代码优化8.1 什么是代码优化什么是代码优化8.2 局部优化局部优化8.3 循环优化循环优化8.4 数据流分析数据流分析第八章第八章 优化优化22023-1-268.1 8.1 什么是代码优化什么是代码优化n1、优化:、优化:对程序进行各种等价变换,使变换后的程序能生成更有效的目标代码。优化可在编译的任何阶段进行,但最主要的一类优化是对中间代码进行优化。n2、常见的优化方式、常见的优化方式 删除多余运算(又称删除公共子表达式)代码外提:循环体中不变的运算提到循环体外 强度削弱:把乘法变成加法第八章第八章 优化优化32023-1-26 变换循环控制条件:目的是删除那些纯粹为
2、控制循环而设立的语句,因此又称删除归纳变量。合并已知量:对于那些编译时便可静态确定的运算结果事先运算出来,不必等到运行程序时再执行。复写传播:某些变量的值并未被改变,便赋给其他变量,则可直接引用原值本身。删除无用赋值:有些变量在赋值后并未引用,却又被重新赋值了,称为无用赋值(前面的赋值)第八章第八章 优化优化42023-1-263、优化分类、优化分类n按阶段分:与机器无关的优化-对中间代码进行 依赖于机器的优化-对目标代码进行n根据优化所涉及的程序范围分成:(1)局部优化:在程序基本块内进行的优化。(2)循环优化:在程序循环体内进行的优化。(3)全局优化:在整个程序范围内进行的优化。n优化工作
3、 数据流分析(control-flow analysis)控制流分析(data-flow analysis)变换(transformations)第八章第八章 优化优化52023-1-264、优化技术简介、优化技术简介 1.删除多余运算 2.循环不变代码外提 3.强度削弱 4.变换循环控制条件 5.合并已知量与复写传播 6.删除无用赋值例:例:P:=0 for I:=1 to 20 do P:=P+AI*BI第八章第八章 优化优化62023-1-26(1)P:=0(2)I:=1(3)T1:=4*I(4)T2:=addr(A)-4(5)T3:=T2T1(6)T4:=4*I(7)T5:=addr(
4、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:=T1第八章第八章 优化优化72023-1-26(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:
5、=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+4第八章第八章 优化优化82023-1-26(1)P:=0(2)I:=1(4)T2:=addr(A)-4(7)T5:=addr(B)-4(3)T1:
6、=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:=4T1T1第八章第八章 优化优化92023-1-26(1)P:=0(2)I:=1(4)T2:=addr(A)-4(
7、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 goto L2 (6)B:=B+1 (7)goto L1 (8)L2:write(A)(9)halt第八章第八章 优化优化132023
8、-1-26划划分分成成四四个个基基本本块块 B1,B2,B3,B4 B1 (1)(2)(3)基基本本块块内内实实行行的的优优化化:合合并并已已知知量量 删删除除多多余余运运算算 B2 (4)删删除除无无用用赋赋值值 (5)B3 (6)(7)B4 (8)(9)第八章第八章 优化优化142023-1-26基本块的基本块的DAG表示及其应用表示及其应用DAG Directed Acyclic Graph 无环路有向图无环路有向图基本块的基本块的DAG是在结点上带有标记的是在结点上带有标记的DAG 叶结点叶结点 独特的标识符独特的标识符(名字名字,常数常数)标记标记 内部结点内部结点 运算符号标记运算
9、符号标记 各个结点各个结点 附加标识符标记附加标识符标记第八章第八章 优化优化152023-1-26用用 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 Cn1n2n1n3n1n2第八章第八章 优化优化162023-1-26仅仅含含 0,1,2 型型四四元元式式的的基基本本块块的的 DAG 构构造造算算法法:首首先先,DAG 为为空空。对对基基本本块块的的每每一一四四元元式式,依依次次执执行行:1
10、如如果果 NODE(B)无无定定义义,则则构构造造一一标标记记为为 B 的的叶叶结结点点并并定定义义 NODE(B)为为这这个个结结点点;如如果果当当前前四四元元式式是是 0 型型,则则记记 NODE(B)的的值值为为 n,转转 4。如如果果当当前前四四元元式式是是 1 型型,则则转转 2(1)。如如果果当当前前四四元元式式是是 2 型型,则则:(I)如如果果 NODE(1)无无定定义义,则则构构造造一一标标记记为为 C 的的叶叶结结点点并并定定义义 NODE(1)为为这这个个结结点点;(II)转转 2(2)第八章第八章 优化优化172023-1-262(1)如如果果 NODE(B)是是标标记
11、记为为常常数数的的叶叶结结点点,则则转转 2(3),否否则则转转 3(1)。(2)如如果果 NODE(B)和和 NODE(C)都都是是标标记记为为常常数数的的叶叶结结点点,则则转转 2(4),否否则则转转 3(2)。(3)执执行行 op B(即即合合并并已已知知量量),令令得得到到的的新新常常数数为为P。如如果果 NODE(B)是是处处理理当当前前四四元元式式时时新新构构造造出出来来的的结结点点,则则删删除除它它。如如果果 NODE(P)无无定定义义,则则构构造造一一用用 P 做做标标记记的的叶叶结结点点 n。置置 NODE(P)=n,转转 4。(4)执执行行 B op C(即即合合并并已已知
12、知量量),令令得得到到的的新新常常数数为为P。如如果果 NODE(B)或或 NODE(C)是是处处理理当当前前四四元元式式时时新新构构造造出出来来的的结结点点,则则删删除除它它。如如果果 NODE(P)无无定定义义,则则构构造造一一用用 P做做标标记记的的叶叶结结点点 n。置置 NODE(P)=n,转转 4。第八章第八章 优化优化182023-1-263(1)检检查查 DAG 中中是是否否已已有有一一结结点点,其其唯唯一一后后继继为为NODE(B),且且标标记记为为 op(即即找找公公共共子子表表达达式式)。如如果果没没有有,则则构构造造该该结结点点 n,否否则则就就把把已已有有的的结结点点作
13、作为为它它的的结结点点并并设设该该结结点点为为 n,转转 4。(2)检检查查中中 DAG 中中是是否否已已有有一一结结点点,其其左左后后继继为为NODE(B),其其右右后后继继为为 NODE(C),且且标标记记为为 op(即即找找公公共共子子表表达达式式)。如如果果没没有有,则则构构造造该该结结点点 n,否否则则就就把把已已有有的的结结点点作作为为它它的的结结点点并并设设该该结结点点为为 n,转转 4。4.如如果果 NODE(A)无无定定义义,则则把把 A 附附加加在在结结点点 n 上上并并令令NODE(A)=n;否否则则先先把把 A 从从 NODE(A)结结点点上上附附加加标标识识符符集集中
14、中删删除除(注注意意,如如果果 NODE(A)是是叶叶结结点点,则则其其标标记记 A 不不删删除除),把把 A 附附加加到到新新结结点点 n 上上并并令令 NODE(A)=n。转转处处理理下下一一四四元元式式。而而后后,我我们们可可由由 DAG 重重新新生生成成原原基基本本块块的的一一个个优优化化的的代代码码序序列列。第八章第八章 优化优化192023-1-26(1)T0:=3.14(2)T1:=2*T0(3)T2:=R+r(4)A:=T1*T2(5)B:=A(6)T3:=2*T0(7)T4:=R+r(8)T5:=T3*T4(9)T6:=R-r(10)B:=T5*T6例:例:第八章第八章 优化
15、优化202023-1-26 To 3.14 (a)n1 T0 T1 3.14 6.28 (b)n2n1 T2 +T0 T1 3.14 6.28 R r (c)n2n5n3n1n4第八章第八章 优化优化212023-1-26 A *T2 +T0 T1 3.14 6.28 R r (d)n2n5n3n1n4n6第八章第八章 优化优化222023-1-26 A,B *T2 +T0 T1 3.14 6.28 R r (e)n2n5n3n1n4n6第八章第八章 优化优化232023-1-26 A,B *T2 +T0 T1,T3 3.14 6.28 R r (f)n2n5n3n1n4n6第八章第八章 优化
16、优化242023-1-26 A,B *T2,T4 +T0 T1,T3 3.14 6.28 R r (g)n2n5n3n1n4n6第八章第八章 优化优化252023-1-26 A,B,T5 *T2,T4 +T0 T1,T3 3.14 6.28 R r (h)n2n5n3n1n4n6第八章第八章 优化优化262023-1-26 A,B,T5 *T2,T4 T6 +-T0 T1,T3 3.14 6.28 R rn2n5n3n7n1n4n6第八章第八章 优化优化272023-1-26 B *A,T5 *T2,T4 T6 +-T0 T1,T3 3.14 6.28 R r (j)n2n5n3n7n1n4n
17、6n8第八章第八章 优化优化282023-1-26(1)T0:=3.14(2)T1:=6.28(3)T3:=6.28(4)T2:=R+r(5)T4:=T2(6)A:=6.28*T2(7)T5:=A(8)T6:=R-r(9)B:=A*T6第八章第八章 优化优化292023-1-26控制流程图控制流程图(流图):具有唯一首结点的有向图(流图):具有唯一首结点的有向图G=(N,E,n0)N:结点集:结点集 基本块集基本块集 E:有向边集:有向边集 n0:首结点:首结点 包含程序第一个包含程序第一个 语句的基本块语句的基本块8.3 循环优化第八章第八章 优化优化302023-1-26有有向向边边 基基
18、本本块块 j j 在在程程序序的的位位置置紧紧跟跟在在 i i 后后,且且 i i 的的出出口口语语句句不不是是转转移移或或停停语语句句i i 的的出出口口是是 g go ot to o(S S)或或 i if f g go ot to o(S S),而而(S S)是是 j j 的的入入口口语语句句 i j第八章第八章 优化优化2023-1-26例例:*(1)read x(20read y*(3)r:=x m od y(4)if r=0 goto(8)*(5)x:=y(6)y:=r(7)goto(3)*(8)w rite y(9)halt第八章第八章 优化优化322023-1-26(1)rea
19、d x B1(2)read y(3)r:=x mod y B2(4)if r=0 goto(8)(5)x:=y (8)write y B4(6)y:=r B3 (9)halt(7)goto(3)第八章第八章 优化优化332023-1-26 1 2 4 3第八章第八章 优化优化342023-1-26分析程序流图中结点间的关系分析程序流图中结点间的关系m DOM n 定义 在程序流图中在程序流图中,对任意两个结点对任意两个结点m和和n,如果从流图的首结点出发如果从流图的首结点出发,到达到达n的任意通路都的任意通路都要经过要经过m,则称则称m是是n的必经结点的必经结点,记为记为m DOM n (a,
展开阅读全文