第10章-目标代码生成_第1页
第10章-目标代码生成_第2页
第10章-目标代码生成_第3页
第10章-目标代码生成_第4页
第10章-目标代码生成_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

第十章目标代码生成目标代码

虚拟目标代码:虚拟机上的目标程序。在本地机器上具备虚拟机的解释器。

实际目标代码:实际机器上的指令序列绝对地址机器代码:可重定位的机器代码:汇编代码:三种硬件地址模式指令格式:OpR#C(立即-----寄存器)OpR2d(R1)(存储器-----寄存器)OpR1R2(寄存器-----寄存器)几个常见指令的含义:

LDRSource 从Source读出送入ROpRSource SourceopR结果送入RSTTargetR R的内容送入Target.表达式和赋值语句的翻译

形如(Op,A,B,T):LDRA;OpRB

形如(ASSIG,A,B):LDRA;STBR

例:Z:=X*(a+b)*Y*(a+b)

(+,a,b,t1)LDRa;AddRb(*,X,t1,t2)STRt1;MultRX(*,t2,Y,t3)MultRY(*,t3,t1,t4)MultRt1输入/输出语句的翻译输入语句:(READ,A)

INR STA,R输出语句:(WRITE,A) LDR,A OUTR条件语句四元式的翻译(THEN,t,_,_)生成的目标代码为: LDR,t JUMP0R,__(ELSE,_,_,_)生成的目标代码为: JMP__ 同时回填JUMP0指令的目的地址(ENDIF,_,_,_)不产生目标代码,只负责完成ELSE子句的地址回填工作。循环语句的翻译(WHILE,_,_,_)不产生目标代码,只用来标记while语句的入口地址。(DO,t,_,_)产生的目标代码为: LDR,t JUMP0R,_(ENDWHILE,_,_,_)产生的目标代码: JMPA

回填前面DO四元式所产生的半条指令标号和goto语句的翻译(LABEL,_,_,L)不产生目标代码,只向L所分配到的存储单元写入转向地址。

(GOTO,_,_,L)生成的目标代码为 JMP*L过程、函数说明的翻译(ENTRY,Q,—,—)不产生目标代码,只需将当前指令地址A填入Q的相应语义信息中。(ENDPROC,—,—,—)或(ENDFUNC,—,—,—)

1.将本层活动记录中保存的机器状态恢复过来,对应一组读指令。 2.删除本层活动记录,使动态外层的活动记录成为当前活动记录; 3.按1(top)中记载的返回地址返回。 目标代码为: STtop,sp LDsp,0(top)

//作废当前活动记录 JMP1(top)

//按返回地址返回过程、函数调用语句的翻译值参情形(ValACT,t,Offset,size)

a.若t为间接变量,则生成的目标代码为: LDR,*t SToffset(sp),R b.若t为直接变量,则生成的目标代码为:

LDR,t SToffset(sp),R c.若t为数组,则生成的目标代码为:

moveBt,offset(sp),size

变参情形(VarACT,t,Offset,size) a.若t为直接变量,,则生成的目标代码为: LEAR,t SToffset(sp),R b.若t为间接变量,,则生成的目标代码为: LDR,t SToffset(sp),R

过程、函数调用语句的翻译过程、函数调用语句(CALL,f,—,t)

1.生成填写变量访问环境指令 2.把机器状态(寄存器内容)保存到活动记录的机器状态区中,一般应生成一组存的指令 3.要填写管理信息.首先填写过程层数.从过程f的语义信息中取其层数,填入到2(top)中,生成指令为 LDR,sem[f].level ST2(top),R过程、函数调用语句的翻译 4.填写动态链指针 ST0(top),sp 5.填写返回地址 LDR,A+5 //A ST1(top),R//A+1 6.生成过程活动记录 STsp,top //A+2 STtop,top+sem[f].size//A+3 7.生成转向过程f入口的指令 JMP

温馨提示

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

评论

0/150

提交评论