ImageVerifierCode 换一换
格式:PPT , 页数:9 ,大小:277.50KB ,
资源ID:8465589      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-8465589.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(编译第六章.ppt)为本站会员(czsj190)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

编译第六章.ppt

1、第六章 目标代码生成,一 概述1 目标代码的形式(1)能立即执行的目标代码;(2)待装配的浮动目标代码;(3)汇编语言目标代码.2 目标代码生成原则(1) 生成的目标代码短而高效;(2) 充分利用寄存器,减少访问内存的次数.,2,3,三 代码生成器及辅助信息基本思想: 当生成计算某变量值的目标代码时,尽量让该变量 的值保存在某个寄存器中,直到该寄存器要用来存放其它变量的值 或者基本块结束之前不再引用该变量的值,才把该变量的值存放 到存储器中.为了能知道某变量的值是否在寄存器中,在那个寄存器中,是 否该送回内存中等,需要一些辅助信息. 1 待用信息当翻译到四元式 A:=B op C 时,我们需要

2、知道基本块内后面 的四元式是否还引用 A B C ,是哪些四元式引用?定义: 设四元式(i) 对A定值且到达四元式( j) ,四元式 ( j) 中引用A ,则称 j 是四元式 i 的变量A 的待用信息; 满足上述定义的所有 j, 构成了 A 的待用信息集.,4,采用如下方式表示待用信息集,为每个四元式建立一个如下的表项:定值名 指针 引用名1 指针 引用名2 指针A * B * C *A * B NilC Nil,通过链表把 A 的所有待用信息连接起来.当执行到 A:=B op C 时,就可以检查待用信息链,确定 A B C 在该四元式之后是否还引 用(若为 Nil ,表示不再引用, 此时,应

3、将非活跃变量的寄存器释放, 存入内存中).,5,2 寄存器描述假设系统可以使用的寄存器为:R1,R2,Rn每个寄存器都需要描述是否被占用,被哪些变量占用? 假设 RVALUE Ri 为集合类型,用于描述寄存器 Ri 的使用情况, 也即哪些变量同时占用了 Ri. 3 变量描述在翻译过程中,应了解基本块中的每个变量的存储状况,确定 变量的值是在寄存器中还是在内存中?假设 AVALUE A 为集合类型,用于描述变量 的存储情况:,AVALUE A=, Ri A的有效值在寄存器中; M A的有效值在内存中; Ri,M 均有效.,6,4 代码生成算法下面,仅讨论一般情形 A:=B op C 的代码翻译,

4、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,Bop R,C若 B=R ,则删除 AVALUE B 中的 R ;若 C=R ,则删除 AVALUE C 中的 R;令 AVALUE A = R ; RVALUE R = A ;,7,(4) 若 B 的值在基本块内不再引用,

5、且 AVALUE B= Ri则产生目标指令 : mov Ri,B;删除 AVALUE B 中的 Ri; 删除 RVALUE Ri 中的 B;/释放寄存器 Ri.(5) 若 C 的值在基本块内不再引用,且 AVALUE C= Ri则产生目标指令 : mov Ri,C;删除 AVALUE C 中的 Ri; 删除 RVALUE Ri 中的 C;/释放寄存器 Ri.(6) 返回,8,5 GetReg( A:= B op C) 算法(1) 若 B 的值在 R 中, 且 RVALUER 只含 B,且 ( A=B 或 B 的值在基本块内不再引用并且 B 的值已存入内存中) 则 return (R);(2) 否则,若有尚未分配的 R 则 return(R);(3) 否则,从已分配的寄存器中选择一 R ,for (RVALUE R 中的每一变量 V) do 若 V 的值不在内存中,则Mov V, R; AVALUE V= M; RVALUE R= ;return (R),9,

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报