编译原理课件(hdu)CHAPTER10(Code Generation).ppt_第1页
编译原理课件(hdu)CHAPTER10(Code Generation).ppt_第2页
编译原理课件(hdu)CHAPTER10(Code Generation).ppt_第3页
编译原理课件(hdu)CHAPTER10(Code Generation).ppt_第4页
编译原理课件(hdu)CHAPTER10(Code Generation).ppt_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2020/7/15,1,第10章代码生成,代码生成器的运行时存储管理用于寄存器分配的代码生成算法,代码生成于2020年7月15日,2月10日,代码生成器P513图9.1,输入:(优化)三地址代码和符号表,输出:目标代码,代码生成于2020年7月15日,目标代码形式的绝对机器语言代码,所有绝对地址,可立即执行并重新定位。它很容易生成,但它需要汇编、2020年7月15日、4日、10日的代码生成以及运行时存储管理。上节课的具体实现是P522-528,图9.4-9.6,代码生成于2020年7月15日、5日、10日。至于寄存器分配,只考虑如何在基本块中分配寄存器来改进代码。尽可能计算寄存器中的参考变量值

2、和计算结果,直到寄存器不够用。在离开基本块之前,把寄存器的内容放入内存。基本块后面不再引用的变量所占用的寄存器应该尽快释放。该代码将于2020年7月15日、6日和10日生成。下一个引用信息:X在语句I中是固定的,X可以到达语句J,X在语句J中被引用,假设J是变量X在I中的下一个引用信息,同时假设X在I点是活动的(因为它将在以后被引用),代码生成将在2020年7月15日,7月10日进行,以获得下一个引用信息和基本块中每个变量的活动信息。 并且符号表中每个变量的记录项都有下一个引用信息列和活动信息列,假设每个变量在退出时是活动的,而临时变量是非活动的。 从基本块的出口向前扫描每个三地址语句。具体步

3、骤如下:2020/7/15,8,10代码生成,1。设置初始值,并将每个变量设置为“无下一个引用”、“活动”或“非活动”,2。从基本块的出口向前扫描每个三地址代码(I: X:=(1),将变量x的下一个引用信息和活动信息附加到语句标签I上,并在2020年7月15日、9日和10日生成代码;(2)将变量x的下一个引用信息列和活动信息列分别设置为“无下一个引用”和“非活动”;(3)将变量Y和Z的下一个引用信息和活动信息附加到语句标签I,(4)将变量Y和Z的下一个引用信息列设置为“I”,将活动信息列设置为“active”,代码生成将在2020年7月15日进行。示例:(P539)基本块包含以下四个代码,A、

4、B、C和D是变量。t、u和v是临时变量(1)t :=a-b(2)u 3360=a-c(3)v 3360=t u(4)d :=v u,2020/7/15,11,2020/7/11 F代表“无下一个参考”和“无效”,l代表“有效”, 用下一个参考信息和有效信息标记的三个地址码是:(1)T(3)L :=A(2)L B FL(2)U(3)L :=A FL C FL(3)V(4)L 3360=T FF U(4)L(4)D FL : 10代码生成,简单代码生成算法,只考虑基本块内的目标代码生成,寄存器描述符(针对每个寄存器)记录每个寄存器的当前内容, 地址描述符(运行时为每个名称)记录一个或多个由每个名称存储的地址,不考虑寄存器描述符和地址描述符(采用哪种数据结构)的具体实现,2020/7/15,1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论