电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > PPT文档下载
分享到微信 分享到微博 分享到QQ空间

编译原理 之 代码优化

  • 资源ID:56627444       资源大小:411.50KB        全文页数:75页
  • 资源格式: PPT        下载积分:10金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要10金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

编译原理 之 代码优化

第十一章,代码优化,11,1,代码优化技术简介,11,2,局部优化,11,3,控制流程分析和循环,11,4,数据流分析举例,优化分类,按阶段分: 与机器无关的优化-对中间代码进行 依赖于机器的优化-对目标代码进行根据优化所涉及的程序范围分成: (1)局部优化:(基本块) (2)循环优化:对循环中的代码进行优化 (3)全局优化:大范围的优化优化工作数据流分析(data-flow analysis)控制流分析(control-flow analysis) 变换(transformations),优化技术简介: 1.删除多余运算 2.循环不变代码外提 3.强度削弱 4.变换循环控制条件 5.合并已知量与复写传播 6.删除无用赋值 P:=0 for I:=1 to 20 doP:=P+AI*BI,从例子P:=0for I:=1 to 20 doP:=P+AI*BI 看优化技术是什么: (假定数组按每个元素占4个字长编址),(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(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 (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 (12)if I<=20 goto(3),2. 代码外提,1.删除多余运算,(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 (12)if I<=20 goto(3),(1)P:=0 (2)I:=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)I:=I+1(12)if I<=20 goto(5),(3)T1:=4*I,(3)T1:=T1+4,3 强度削弱: 乘法改成加法,(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,T1,T1,5 合并已知量,4 变换循环控制条件. I的值在变换后不再被引用,5 复写传播,(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<=80 goto(5),6删除无用赋值 T4后面没有被引用,6删除无用赋值 I后面没有被引用,6删除无用赋值 由(11),I是多余赋值,11.2 局部优化,基本块:是指程序中一顺序执行的语句序列,其中只有一个入口语句和一个出口语句。 入口语句: 程序的第一个语句;或者, 条件转移语句或无条件转移语句的转移目标语句;或者 紧跟在条件转移语句后面的语句。,划分基本块的算法:,求出四元式程序之中各个基本块的入口语句。 对每一入口语句,构造其所属的基本块。它是由该语句到下一入口语句(不包括下一入口语句),或到一转移语句(包括该转移语句),或到一停语句(包括该停语句)之间的语句序列组成的。 凡未被纳入某一基本块的语句,都是程序中控制流程无法到达的语句,因而也是不会被执行到的语句,我们可以把它们删除。,(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) 无环路有向图基本块的DAG是在结点上带有标记的DAG叶结点: 独特的标识符(名字,常数)标记内部结点: 运算符号标记各个结点: 附加标识符标记,用,DAG,进行基本块的优化,四元式,DAG,结点,0,型:,A:=B(:=,B,A),n1,A,B,1,型,: A:=op B(op,B,A),n2 A,op,n1,B,2,型,: A:=B op C(op, B, C,A),A,op,n1,n2,B,C,n1,n2,n1,n3,n1,n2,T0:=3.14 T1:=2*T0 T2:=R+r A:=T1*T2 B:=A T3:=2*T0 T4:=R+r T5:=T3*T4 T6:=R-r B:=T5*T6,T0:=3.14 T1:=2*T0 T2:=R+r A:=T1*T2 B:=A T3:=2*T0 T4:=R+r T5:=T3*T4 T6:=R-r B:=T5*T6,T0:=3.14 T1:=2*T0 T2:=R+r A:=T1*T2 B:=A T3:=2*T0 T4:=R+r T5:=T3*T4 T6:=R-r B:=T5*T6,T0:=3.14 T1:=2*T0 T2:=R+r A:=T1*T2 B:=A T3:=2*T0 T4:=R+r T5:=T3*T4 T6:=R-r B:=T5*T6,T0:=3.14 T1:=2*T0 T2:=R+r A:=T1*T2 B:=A T3:=2*T0 T4:=R+r T5:=T3*T4 T6:=R-r B:=T5*T6,T0:=3.14 T1:=2*T0 T2:=R+r A:=T1*T2 B:=A T3:=2*T0 T4:=R+r T5:=T3*T4 T6:=R-r B:=T5*T6,T0:=3.14 T1:=2*T0 T2:=R+r A:=T1*T2 B:=A T3:=2*T0 T4:=R+r T5:=T3*T4 T6:=R-r B:=T5*T6,T0:=3.14 T1:=2*T0 T2:=R+r A:=T1*T2 B:=A T3:=2*T0 T4:=R+r T5:=T3*T4 T6:=R-r B:=T5*T6,T0:=3.14 T1:=2*T0 T2:=R+r A:=T1*T2 B:=A T3:=2*T0 T4:=R+r T5:=T3*T4 T6:=R-r B:=T5*T6,T0:=3.14 T1:=2*T0 T2:=R+r A:=T1*T2 B:=A T3:=2*T0 T4:=R+r T5:=T3*T4 T6:=R-r B:=T5*T6,G中的代码(2)和(6)的已知量都已合并。 G中的(5)的无用赋值已被删除。 G中的(3)和(7)的公共子表达式R+r只被计算一次,删除了多余运算。,除了可应用DAG进行上述优化外, 还可从基本块的DAG中得到一些其它优化信息:在基本块外被定值并在基本块内被引用的所以标识符,就是作为叶子结点上标识的哪些标识符.在基本块内被定值且该值能在基本块后被引用的所有标识符,就是DGA各结点上的那些附加标识符.,根据有关变量在基本块后被引用的情况,可以进一步删除基本块中的其它无用赋值.假设T0,T1, ,T6在基本块后都没有被引用,则可将上述DAG重写为新的四元式代码序列.,S1=R+r A=6.28*S1 S2=R-r B=A*S2 S1和S2用于存放中间临时变量.,作业:,练习(P271) 1,2,11,3,控制流分析和循环,控制流程图,(流图):具有唯一首结点的有向图,G=,(,N,,,E,,,n,0,),N,:结点集,基本块集,E,:有向边集,n,0,:首结点,包含程序第一个,语句的基本块,分析程序流图中结点间的关系 m DOM n 定义在程序流图中,对任意两个结点m和n,如果从流图的首结点出发,到达n的任意通路都要经过m,则称m是n的必经结点,记为m DOM n (a,a DOM a) 必经结点集 定义结点n的所有必经结点的集合,称为结点n的必经结点集,记为D(n).,例,:,6,7,3,4,1,2,3,5,7,6,1,2,1,2,1,2,1,3,begin D(n0) := n0 for nN-n0 do D(n) := N; /*置初值 */ CHANGE := TRUE; while CHANGE do beginCHANGE := FALSEfor nN -n0 do beginNEWD := n D(p); pP(n)if D(n) NEWD then beginCHANGE := TRUE;D(n) := NEWD end end end end,循环的查找,循环的查找算法,回边:假设,a,b,是流图中的一条有向边,如果,b DOM a,,则,称,a,b,是流图中的一条回边。,有向边,nd,是回边,组成的循环是由结点,d,,结点,n,以及有,通路到达,n,而该通路不经过,d,的所有结点组成,并且,d,是该循,环的唯一入口结点。,回边 6 6循环67 4 4,5,6,74 2 2,3,4,5,6,7 循环(结点序列的性质) 1.强连通的(任意两结点间,必有一条通路,且该通路上各结点都属于该结点序列) 2.它们中间有且只有一个是入口结点.,例,:,6,7,3,4,1,2,3,5,7,6,1,2,1,2,1,2,3,1,一些主要的概念,到达-定值 引用-定值链(ud链) 活跃变量 定值-引用链(du链),循环优化,代码外提 删除归纳变量 强度销弱,入口结点循环L,前置结点入口结点循环L ,1,2,3,4,5,

注意事项

本文(编译原理 之 代码优化)为本站会员(xzh****18)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.