电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

编译原理 之 代码优化

75页
  • 卖家[上传人]:xzh****18
  • 文档编号:56627444
  • 上传时间:2018-10-14
  • 文档格式:PPT
  • 文档大小:411.50KB
  • / 75 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、第十一章,代码优化,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)T

      2、6:=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(

      3、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:=T

      4、1 (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,基本块的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,

      5、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:

      6、=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中得到一些其它优化信息:在基本块外被定值并在基本块内被引用的

      7、所以标识符,就是作为叶子结点上标识的哪些标识符.在基本块内被定值且该值能在基本块后被引用的所有标识符,就是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

      8、,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分享,可在线阅读,更多相关《编译原理 之 代码优化》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.