网站大量收购独家精品文档,联系QQ:2885784924

柳青《编译技术》Comp-Cha12.pptVIP

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * 12.3 代码生成程序的开发方法 方法局限性 需通过形式描述的模式如实地反映机 器的特性,这点不容易做到; 进行模式匹配时耗费时间很长; 目标代码的质量不理想。 * * 12.3 代码生成程序的开发方法 3. 表驱动代码生成法 表驱动代码生成方法,是模仿从语法描述构造表和表驱动的一种语法分析方法。 首先,把对目标机的形式化描述进行预加工转换成代码生成表; 然后,用表驱动的代码生成程序,来驱动代码生成表; 最后,把中间语言的内部表示翻译成目标机的汇编代码。 * * 12.3 代码生成程序的开发方法 方法优点: 容易使用和修改,并且能较容易地为不同的计算机构造适合于它们自己的代码生成程序。 方法局限性: 它所生成的目标代码的质量,依赖于机器描述的完善程度。 * * 12.3 代码生成程序的开发方法 三种方法比较: 解释性代码生成法 比较容易达到目标代码质量的要求,代码生成算法有效,但可移植性欠缺; 模式匹配代码生成法 可达到较好的可移植性,但要生成高质量的目标代码以及高效率的算法,较困难; 表驱动代码生成法 能达到很好的可移植性,它实际上是代码生成程序的生成程序,真正实现了代码生成自动化,但方法不够成熟。 * * 12.4 代码生成程序的自动化构造 源程序 前端 中间表示 代码生成程序 汇编器 机器代码 汇编代码 代码生成程序的构造程序 代码生成描述 代码生成程序的构造系统的总体结构 * * 12.4 代码生成程序的自动化构造 自动构造代码生成程序技术: 基于语法制导技术 语义制导技术 * * 12.4 代码生成程序的自动化构造 基于语法制导的代码生成程序自动构造技术 此技术也称为Graham-Glanville方法。它利用类似于上下文无关文法的规则和相应的机器指令模板描述机器操作。当一条生成描述规则与一条波兰式中缀表示子字符串相匹配,且满足有关的语义限制时,将被匹配的部分用相应规则左边的符号替代,同时输出实例化后相应的指令模板。 Graham-Glanville 代码生成程序由中间语言变换、模式匹配器和指令生成3部分组成。 * * r.2 r.1 r.2 k.1 r.2 r.1 r.3 r.1+r.2 r.3 r.1+k.2 r.3 k.2+r.1 r.3 r.1-r.2 r.3 r.1-k.2 r.3 [r.1+r.2] r.3 [r.1+k.2] r.3 [r.1] [r.2+r.3] [r.1] [r.2+k.3] [r.1] [r.2 ] [r.1] r.2=r.1 r.2=k.1 r.2=mov r.2 r.1 r.3=+r.1 r.2 r.3=+r.1 k.2 r.3=+k.2 r.1 r.3=-r.1 r.2 r.3=-r.1 k.2 r.3= +r.1 r.2 r.3= +r.1 k.2 ε= +r.2 r.1 ε= r.2 r.3 r.1 ε= r.2 k.1 r.1 ε= r.2 r.1 or r.1,0,r.2 or 0,k.1,r.2 or r.1,r.2 add r.1,r.2,r.3 add r.1,k.2,r.3 add r.1,k.2,r.3 sub r.1,r.2,r.3 sub r.1,k.2,r.3 ld [r.1, r.2], r.3 ld [r.1, k.2], r.3 ld [r.1], r.2 st r.1, [r.2, r.3] st r.1, [r.2, k.1] st r.1, [r.2] LIR指令 机器描述规则 相应的SPARC指令模板 * * 12.4 代码生成程序的自动化构造 r.2 [r8] r.1 [r8+4] r3 r2+r1 [r8+8] r3 r4 r1-1 [r8+4] r4 add add r2 r8 1 r1 r2 add r2 r8 add add r8 4 r1 r8 4 LIR代码序列 LIR代码序列的树表示 * * ε r2r8 +r8 8+r2 r1+r8 4 +r8 4-r1 1 ld [r8, 0], r2 +r8 8+r2 r1+r8 r1 4 +r8 4-r1 1 ld [r8, 0], r1 +r8 8 +r2 r1 r3 +r8 4-r1 1 add r2, r1, r3 +r8 8+r3 ε +r8 4-r1

文档评论(0)

***** + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8135026137000003

1亿VIP精品文档

相关文档