编译原理第三版 第十一章 代码生成.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理第三版 第十一章 代码生成

* * * 第十一章 目标代码生成 本章要点 任务:将优化后的中间代码变换为目标代码 目标代码生成器的设计标准 产生正确代码 易于实现、测试及维护等。 一般问题 简单的代码生成器 寄存器分配 11.1 一般问题 代码生成器的输入:源程序中间代码、符号表信息 代码生成器输出(目标代码形式): 可执行的机器语言代码(绝对机器代码) 待装配的机器语言模块 汇编语言代码 指令的选择 指令集的一致性、完全性、指令速度等。 寄存器分配 在程序某点上哪些量驻留寄存器 驻留寄存器的量驻进哪些寄存器 计算顺序 有些计算顺序要求存放中间结果的寄存器的数 量少。 11.2 一个计算机模型 指令类型 直接地址型:op Ri, M 寄存器型: op Ri, Rj 变址型: op Ri, c(Rj) 间接型: op Ri, * M op Ri, *Rj op Ri, *c(Rj) 运算符:LD、ST、ADD、SUB、MUL、DIV等 例:LD R0,B ST D,R1 11.3 简单代码生成器 功能: 依次把中间代码转换为目标代码。 在基本块范围内充分利用寄存器。 指令类型: 直接地址型: op Ri, M 寄存器型: op Ri, Rj 变址型: op Ri, c ( Rj ) 间接访问型: op Ri, *M op Ri, *Rj op Ri, *c (Rj ) 原则: 生成目标代码时尽量引用寄存器中的值,少访问内存。 已在寄存器中的值尽量保存,直至必须释放为止。 一般地,不考虑效率时, 形如X:=Y+Z的中间代 码,可翻译为: LD R,Y ADD R,Z ST R,X 例:高级语言语句:A:=(B+C)*D+E 中间代码:(1)T1:=B+C (2)T2:=T1*D (3)T3:=T2+E 目标代码:(1)LD R,B (2)ADD R,C (3)ST R,T1 (4)LD R,T1 (5)MUL R,D (6)ST R,T2 (7)LD R,T2 (8)ADD R,E (9)ST R,A 1. 待用信息与活跃信息 确定变量何处引用、是否引用 (1) 待用信息: 在基本块中,若 i 点对A定值, j点引用A,且 i 至 j 未对A再定值 则称j是i 关于A的待用信息 (2) 活跃信息: 若A在p点的值在基本块内或 基本块的后继块中还要引用 则称A在p点活跃 . . . (i) A:= . . . . . . (j) . . . :=. . . A. . . . . . (3) 计算待用信息和活跃信息算法 序号 四元式 左部 左操作数右操作数 名字 . . . 待用信息 活跃信息 四 元 式 表 符 号 表 算法步骤: 1. 初始化: 基本块中各变量的待用信息栏置: 非待用 ( ^ ) 活跃信息栏置 :非活跃(^) 或 活跃 (Y) 2. 从基本块的出口至入口处理各个四元式 (i) A:=B op C 把符号表中A的待用-活跃信息附加到四元式 i 的左部 把符号表中A的待用-活跃信息置为 ( ^, ^ ) 把符号表中B和C的待用 - 活跃信息附加到i的左右操作数 把符号表中B和C的待用 - 活跃信息置为 ( i , Y ) 3.重复步骤2直到所有中间代码处理完。 [ 例] 考察基本块 (1) T:= A - B (2) U:= A - C (3) V:= T + U (4) W:= V + U W是出口活跃的 符号表中的待用、活跃信息 序号 四元式 左 部 左操作数右操作数 名字 ( 待用信息 , 活跃信息) T ( ^, ^) A ( ^, ^) B ( ^, ^) C ( ^, ^ ) U ( ^, ^) V ( ^, ^ ) W ( ^, Y)

文档评论(0)

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

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

1亿VIP精品文档

相关文档