编译 第六章 目标代码生成.pptVIP

  1. 1、本文档共9页,可阅读全部内容。
  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文档。上传文档
查看更多
* 一 概述 1 目标代码的形式 (1)能立即执行的目标代码; (2)待装配的浮动目标代码; (3)汇编语言目标代码. 2 目标代码生成原则 (1) 生成的目标代码短而高效; (2) 充分利用寄存器,减少访问内存的次数. * 二 计算机模型 假设计算机只有四种类型的机器指令: 指令类型 指令形式 意义 直接地址型 op Ri,M (Ri)op(M) →Ri 寄存器型 op Ri,Rj (Ri)op(Rj) →Ri 变址型 op Ri,C(Rj) (Ri)op((Rj)+C) →Ri 间址型 op Ri,*M (Ri)op((M)) →Ri op Ri,*Rj (Ri)op((Rj)) →Ri op Ri,* C(Rj) (Ri)op(((Rj)+C)) →Ri * 三 代码生成器及辅助信息 基本思想: 当生成计算某变量值的目标代码时,尽量让该变量 的值保存在某个寄存器中,直到该寄存器要用来存放其它变量的值 或者基本块结束之前不再引用该变量的值,才把该变量的值存放 到存储器中. 为了能知道某变量的值是否在寄存器中,在那个寄存器中,是 否该送回内存中等,需要一些辅助信息. 1 待用信息 当翻译到四元式 A:=B op C 时,我们需要知道基本块内后面 的四元式是否还引用 A B C ,是哪些四元式引用? 定义: 设四元式(i) 对A定值且到达四元式( j) ,四元式 ( j) 中引用 A ,则称 j 是四元式 i 的变量A 的待用信息; 满足上述定义 的所有 j, 构成了 A 的待用信息集. * 采用如下方式表示待用信息集,为每个四元式建立一个如下的表项: 定值名 指针 引用名1 指针 引用名2 指针 A * B * C * A * B Nil C Nil 通过链表把 A 的所有待用信息连接起来.当执行到 A:=B op C 时,就可以检查待用信息链,确定 A B C 在该四元式之后是否还引 用(若为 Nil ,表示不再引用, 此时,应将非活跃变量的寄存器释放, 存入内存中). * 2 寄存器描述 假设系统可以使用的寄存器为: R1,R2,........,Rn 每个寄存器都需要描述是否被占用,被哪些变量占用? 假设 RVALUE[ Ri] 为集合类型,用于描述寄存器 Ri 的使用情况, 也即哪些变量同时占用了 Ri. 3 变量描述 在翻译过程中,应了解基本块中的每个变量的存储状况,确定 变量的值是在寄存器中还是在内存中? 假设 AVALUE[ A] 为集合类型,用于描述变量 的存储情况: AVALUE[ A]= { Ri} A的有效值在寄存器中; { M} A的有效值在内存中; { Ri,M} 均有效. * 4 代码生成算法 下面,仅讨论一般情形 A:=B op C 的代码翻译, GetReg( A:= B op C) 函数返回一个寄存器 R ,存放变量 A的值. 代码生成算法: (对四元式 A:= B op C) (1) 令 R = GetReg( A:= B op C) ; (2) 由 AVALUE[ A ] , AVALUE[ B ] 确定 变量 B C 值的有 效存储位置 B’,C’ (3) 若 B’=R 生成 机器指令 op B’,C’ 否则 生成机器指令 mov R,B’ op R,C’ 若 B’=R ,则删除 AVALUE[

文档评论(0)

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

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

1亿VIP精品文档

相关文档