欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    《编译原理》课程简介 (59).pdf

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

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《编译原理》课程简介 (59).pdf

    编译原理C O M P I L A T I O N P RIN C IP LE第八章 代码优化8.3 基本块的DAG表示及应用8.3 基本块的DAG表示及应用v 基本块的DAG一个节点带有下述标记或附加信息的DAG。类型标记含义叶结点标识符(变量名),常数,addr(变量名)变量(常数)的值,变量地址内部结点运算符对其后继结点所代表的值进行该运算的结果各个结点附加一个或多个标识符这些变量具有该结点代表的值利用DAG可以进行基本块的优化8.3 基本块的DAG表示及应用(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例8.3 基本块的DAG表示及应用n基本块的DAG构造算法2 2型型:A:=B op C(op,B,C:A:=B op C(op,B,C,A),A)0 0型:型:A:=B(:=,B,A:=B(:=,B,A),A)1 1型型:A:=op B(op,B,:A:=op B(op,B,A),A)NODE(A):标识符或常数A与节点n的对应函数8.3 基本块的DAG表示及应用n 仅含0,1,2型中间代码的基本块的DAG构造算法:首先,DAG为空。(2)如果当前四元式是1型,则转2(1)。(3)如果当前四元式是2型,则:w(I)如果NODE(C)无定义,则构造一标记为C的叶结点并定义NODE(C)为这个结点;w(II)转2(2)如果NODE(B)无定义,则构造一标记为B的叶结点并定义NODE(B)为这个结点;(1)如果当前四元式是0型,则记NODE(B)的值为n,转4。1对基本块的每一四元式,依次执行:8.3 基本块的DAG表示及应用如果NODE(B)是标记为常数的叶结点,则转2(3),否则转3(1)。2执行B op C(即合并已知量),令得到的新常数为p。如果NODE(B)或NODE(C)是处理当前四元式时新构造出来的结点,则删除它。如果NODE(p)无定义,则构造一用p做标记的叶结点n。置NODE(p)=n,转4。执行op B(即合并已知量),令得到的新常数为p。如果NODE(B)是处理当前四元式时新构造出来的结点,则删除它。如果NODE(p)无定义,则构造一用p做标记的叶结点n。置NODE(p)=n,转4。如果NODE(B)和NODE(C)都是标记为常数的叶结点,则转2(4),否则转3(2)。8.3 基本块的DAG表示及应用检查DAG中是否已有一结点,其唯一后继为NODE(B),且标记为op(即找公共子表达式)。如果没有,则构造该结点n,否则就把已有的结点作为它的结点并设该结点为n,转4。3检查中DAG中是否已有一结点,其左后继为NODE(B),其右后继为NODE(C),且标记为op(即找公共子表达式)。如果没有,则构造该结点n,否则就把已有的结点作为它的结点并设该结点为n,转4。8.3 基本块的DAG表示及应用如果NODE(A)无定义,则把A附加在结点n上并令NODE(A)=n;否则先把A从NODE(A)结点上附加标识符集中删除(注意,如果NODE(A)是叶结点,则其标记A不删除),把A附加到新结点n上并令NODE(A)=n。转处理下一四元式。48.3 基本块的DAG表示及应用步骤1:如果NODE(B)无定义,则构造一标记为B的叶结点并定义NODE(B)为这个结点;(1)如果当前四元式是0型,则记NODE(B)的值为n,转4。步骤4:如果NODE(A)无定义,则把A附加在结点n上并令NODE(A)=n;例(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*T68.3 基本块的DAG表示及应用例(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步骤1:如果NODE(B)无定义,则构造一标记为B的叶结点并定义NODE(B)为这个结点;(1)如果当前四元式是2型,则:(I)如果NODE(C)无定义,则构造一标记为C的叶结点并定义NODE(C)为这个结点;(II)转2(2)。步骤2(2):如果NODE(B)和NODE(C)都是标记为常数的叶结点,则转2(4),否则转3(2)步骤2(4):执行B op C(即合并已知量),令得到的新常数为p。如果NODE(B)或NODE(C)是处理当前四元式时新构造出来的结点,则删除它。如果NODE(p)无定义,则构造一用P做标记的叶结点n。置NODE(p)=n,转4步骤4:如果NODE(A)无定义,则把A附加在结点n上并令NODE(A)=n;8.3 基本块的DAG表示及应用例(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步骤1:如果NODE(B)无定义,则构造一标记为B的叶结点并定义NODE(B)为这个结点;(1)如果当前四元式是2型,则:(I)如果NODE(C)无定义,则构造一标记为C的叶结点并定义NODE(C)为这个结点;(II)转2(2)。步骤2(2):如果NODE(B)和NODE(C)都是标记为常数的叶结点,则转2(4),否则转3(2)步骤3(2):检查中DAG中是否已有一结点,其左后继为NODE(B),其右后继为NODE(C),且标记为op(即找公共子表达式)。如果没有,则构造该结点n,否则就把已有的结点作为它的结点并设该结点为n,转4步骤4:如果NODE(A)无定义,则把A附加在结点n上并令NODE(A)=n;8.3 基本块的DAG表示及应用例(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*T68.3 基本块的DAG表示及应用例(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*T68.3 基本块的DAG表示及应用例(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*T68.3 基本块的DAG表示及应用例(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*T68.3 基本块的DAG表示及应用例(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*T68.3 基本块的DAG表示及应用例(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*T68.3 基本块的DAG表示及应用例(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*T68.3 基本块的DAG表示及应用对任何一个代码,如果其中参与运算的对象都是编译时的已知量,那么算法的步骤(2)并不生成计算该结点值的内部结点,而是执行该运算,用计算出的常数生成一个叶子结点。(合并已知量)如果某变量被赋值后,在它被引用前又重新赋值,那么算法的步骤(4)已把该变量从具有前一个值的结点上删除。(删除无用赋值)n 根据DAG构造算法和上述例子,可以看到:算法的步骤(3)的作用是检查公共子表达式,对具有公共子表达式的所有代码,它只产生一个计算该表达式值的内部结点,而把那些被复制的变量标识符附加到该结点上。(删除公共子表达式)8.3 基本块的DAG表示及应用(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优化前(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优化后|编译原理谢 谢Thanks

    注意事项

    本文(《编译原理》课程简介 (59).pdf)为本站会员(奉***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开