目标代码生成.ppt_第1页
目标代码生成.ppt_第2页
目标代码生成.ppt_第3页
目标代码生成.ppt_第4页
目标代码生成.ppt_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、目标代码生成器位置:目标代码格式:1,定位可以立即执行的机器语言代码2,浮动机器语言代码,需要装配连接才能再次执行;3、需要汇编语言目标代码、汇编和执行。第11章目标代码生成,目标代码必须有效:目标代码短充分利用寄存器以减少内存访问。11.1简单代码生成器,P312中的两个表提供模拟命令系统(类似程序集)。仅介绍一种简单的目标代码生成方法。1,将每个中间代码依次转换为相同数量的目标代码。2、考虑充分使用寄存器的基本块。也就是说,在主块内计算的变量值保留在寄存器中,直到寄存器用于其他用途或到达主块的出口。引用变量时,请使用可能的寄存器中的值。现有赋值语句示例:A:=(B C)*D E相应的中间代

2、码:t 1:=B C t 2:=t1 * D A 3360=t2e,上述中间代码可以翻译为ldr,b addr,ldd要省略ST R,T1,必须知道它不在T1牙齿基本块之外使用。为此,通过引入数据结构(例如“要使用的信息”、“寄存器说明数组”、“变量地址说明数组”)来记录所需的信息。1,要使用的信息,为: 1。在可能的寄存器中存储块中要参照的变量的值。2.尽快释放块中不再引用的变量占用的寄存器。引入:要使用的信息和活动信息(记录在符号表中)。使用信息:对活动变量记录下一次引用该变量的语句编号。对非活动变量记录“不可用”。活动信息:还将引用的变量记录为“活动”。不再引用的变量将记录为“非活动”。

3、激活信息和要使用的信息的配置算法:1,在符号表中,用“不可用”填充牙齿块中的每个变量。根据牙齿变量在出口后是否引用“活动”或“非活动”来填充。2、从出口到入口,在每个门i: A:=B OP C执行:(1)门I后添加A的待定信息和活动信息。(2) A的符号表位于“不可用”、“不活动”的中央。(3)在语句I后附加B、C的暂挂信息、活动信息。(4) B,C的符号表中有“等待使用I”、“活动Y”。主(1)(2)(3)(4)的顺序渡边杏反转。因为b,c可能是a。因此,每个变量的参考信息显示为符号表和每个语句的待处理信息。每个语句还必须记录每个变量的活动信息以及要使用的信息。(,),(,y),(,),(,

4、),(,),(4,y),(4,y),(4,y),(,),)T :=A-B U :=A-C V :=T U W :=V U和已知W在块后面活动时,算法可以获得:2、寄存器描述和地址描述。必须掌握寄存器才能合理分配。在寄存器中,设置地址说明数组AVALUE以最大限度地引用变量的值,并记录每个变量的存储位置(R或M)。Avaluea=Ri(或A)表示变量A的值位于寄存器Ri(或内存)中。3,代码生成算法,对基础块中的每个代码I3360 A :=B OP C运行:1,调用Getreg(I 3360 A :=B OP C),牙齿过程返回存储A值的寄存器R。2、检查AVALUEB和AVALUEC,确定b、

5、c的当前存储位置b、c。3,如果是BR,则创建LD R B OP R C或OP R C。如果B=R或C=R,请从AVALUEB或AVALUEC中删除R。4,AVALUEA=R,RVALUER=A 5,B,c在块中不再引用,在块后面不再处于活动状态,当前值在中间RK中,从RVALUERK中删除B,c,从AVALUEB中删除B,c,2、如果没有符合上述条件的寄存器,则选择未分配的寄存器Ri以选择R=Ri。3、如果没有符合上述条件的寄存器,则选择指定的寄存器Ri以选择R=Ri,选择条件是(1) Ri的变量值已在内存中。(2) Ri的变量值离块中的下一个参照点最远。RVALUERi中的每个m(复制语句

6、中的Ri分配给多个变量)运行:(1)MA;或者,如果M=A和M=C:如果AVALUEM没有M牙齿,则为ST Ri,M;(2) avaluem=m. (3)从RVALUERi中删除m。示例:P316示例11.2可用寄存器为R0,R1 .(1)t :=A-B;GETREG进程第2条,T的寄存器分配为R0,因此LD R0、A SUB R0、B(2)u :=A-C;GETREG进程第2条,U的寄存器分配为R1,LD R1、A SUB R1、C(3)v :=T U;GETREG进程第1条,V的寄存器分配为R0,因此ADDR0,R1,(4)w 3360=V U;GETREG进程1,W的寄存器分配为R0,因此,创建:ADD R0,R1,对于

温馨提示

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

评论

0/150

提交评论