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

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/13359689.html】到电脑端继续下载(重复下载【60天内】不扣币)。

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

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(学习 目标代码生成.ppt)为本站上传会员【pc****0】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

学习 目标代码生成.ppt

1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,第,7,章 目标代码生成,7.1,汇编语言虚拟计算机模型,7.2,从四元式到汇编语言的翻译,7.3,一个简单目标代码生成器,7.4,静态地址分配,1,任务,将中间代码变换成目标代码,实现源程序的最后翻译。由于涉及到目标机器的系统结构,此阶段的工作最复杂。,目标代码的形式,已定位的机器语言代码,编译后可立即执行。,待装配的机器语言代码模块,目前大多数编译系统所产生的目标代码均为可重定位的机器指令。在执行前,将它和系统函数(源程序中使用)的机器指令连接成一个程序,对未确定的地址进行定位(用户程序为,0,

2、地址空间),形成可执行的机器语言程序。,在执行时,操作系统可将目标代码装入内存的任意位置。,汇编语言代码,需经汇编程序翻译,将其转换成可执行的机器语言代码。,由于硬件厂商提供机器的汇编程序,所以编译程序的目标代码通常为汇编语言形式。,目标代码生成要求,目标代码数与中间代码数的比值尽可能小(即目标代码数尽可能少)。,充分利用寄存器,减少访问内存的次数。,删除不必要的临时变量。,2,7.1,汇编语言虚拟计算机模型,内存,共有,64k,个字,,1,个字有,16,个二进制位(,2Byte,),内存地址标识为,0-65535,。,划分为,256,页,页号,0-255,,每页的长度为,256,个字,页内位

3、移为,0-255,。,地址计算:页号*,256+,页内位移。,255,页用作系统堆栈区。,寄存器,通用寄存器(,2,字节),共有,4,个,分别标记为,R0,、,R1,、,R2,、,R3,,用于存放操作数和计算结果,,R3,还可用于变址寻址。,标志寄存器,FlagReg,保存,CMP,指令比较结果。,堆栈寄存器,TopReg,(,2,字节),TopReg,用作系统堆栈栈顶指针。,3,指令系统(简单指令系统),指令格式:,(定长、,2,字节),操作码,Read,从键盘读一个字到第一地址。,Write,从第一地址写一个字到屏幕。,Load,从第二地址将字装入第一地址。,Store,将第一地址中的字存

4、放到第二地址。,Call,控制转移到第二地址指定的内存单元,断点保留在系统堆栈中。,Ret,由系统堆栈获得断点,返回。,Add,将第一地址中的字加上第二地址中的字,结果保留第一地址中。,Sub,Mul,Div,Cmp,将第一地址中的字和第二地址中的字比较,由系统置位,FlagReg,。,FlagReg,=-1,,表示第一地址中的字小于第二地址中的字。,FlagReg,=1,,表示第一地址中的字大于第二地址中的字。,FlagReg,=0,,表示第一地址中的字等于第二地址中的字。,低,8,位用于第二地址的补充定义,4,JMP,无条件转移到第二地址指定的内存单元。,JMPNEG,若,FlagReg,

5、中的值,0,,转移到第二地址指定的内存单元。,JMPPOS,若,FlagReg,中的值,0,,转移到第二地址指定的内存单元。,JMPZERO,若,FlagReg,中的值,0,,转移到第二地址指定的内存单元。,HALT,终止程序执行。,第一地址只能是寄存器(,R0-R3,),第二地址有四种寻址方式,直接地址寻址(,M,),Load,Ri,MXX,Ri(XX,),XX,范围,00-FF,(第,0,页),用,16,进制表示。,寄存器寻址(,R,),Load,Ri,Rj,Ri(Rj,),寄存器(间址)寻址(,R,),Load,Ri,Rj,Ri(Rj,),直接数寻址(,D,),Load,Ri,XX,Ri

6、XX,XX,范围,00-FF,,用,16,进制表示。,变址寻址(,C R3,),Load,Ri,CR3,Ri(C,*256+(R3),C,为常数(范围,00-FF,),用,16,进制表示。,5,指令分类,零地址指令,Ret,、,Halt,A,型一地址指令(无第二地址),Write,、,Read,例:,Read R0,/,从键盘输入一个数,将其存放在,R0,中。,B,型一地址指令(无第一地址),Call,、,Jmp,、,JmpNeg,、,JmpZero,、,JmpPos,例:,Jmp,2R3,/,无条件转移至地址,2*256+(R3),单元,二地址指令,Load,、,Store,、,Add,、

7、Sub,、,Mul,、,Div,、,Cmp,例:,Add R3,1,/R3,的内容加,1,程序举例,用汇编程序编写程序,求,5,的阶乘。,Load R0,1/R0,的范围,1.5,Load R1,1/,初值为,1,存放,5!,。,Add R0,1,Mul R1,R0,Cmp R0,5,JmpNeg M2,Write R1,Halt,6,7.2,从四元式到汇编语言的翻译,符号表、常数表和临时变量表的内存位置,四元式中含有变量在符号表和临时变量表中的入口,以及常数在常数表中的地址,所以先确定符号表、临时变量表和常数表在内存中的位置,然后再讨论四元式的翻译。,无符号实常数表(第,254,页,按地址

8、递减使用),起始地址:,254*256+255=65279,,每个实常数占用,2,个字,(4Byte),。,无符号整常数表(第,254,页,按地址递增使用),起始地址:,254*256=65024,,每个整常数占用,1,个字(,2Byte,)。,符号表(第,252,、,253,页,按地址递减使用),起始地址:,253*256+255=65023,,每个标识符占用,4,个字,(8Byte),。,临时变量表(第,252,、,253,页,按地址递增使用),起始地址:,252*256=64512,,每个临时变量占用,4,个字,(8Byte),。,注:四元式中最多允许出现,512/4=128,个不同的变

9、量,包括临时变量在内。,7,虚拟内存示意图,(,共,64K,、分,255,页、每页,255,字节,),8,设源程序为:,a=2+(+b+1),,它的四元式代码为,+&b 0&T1,+&T1&1&T2,+&2&T2&T3,=&T3 0&a,假设,整常数,1,在无符号整常数表中的地址为,65024,(,254*256+0,),整常数,2,在无符号整常数表中的地址为,65025,(,254*256+1,),变量,a,的符号表入口为,65023,(,253*256+255,),变量,b,的符号表入口为,65019,(,253*256+251,),临时变量,T1,的临时变量表入口为,64512,(,25

10、2*256+0,),临时变量,T2,的临时变量表入口为,64516,(,252*256+4,),临时变量,T3,的临时变量表入口为,64520,(,252*256+8,),实际四元式代码序列应为,+65019064512,+645126502464516,+650256451664520,=64520065023,9,单个四元式的翻译,四元式的翻译关键是确定地址,约定如下:,指令的第一地址使用,R0,。,指令的第二地址使用,R3,(兼作变址寄存器)。,ARG1,、,ARG2,为变量地址或常数地址,,RESULT,一定是变量地址。,C1=ARG1/256,、,D1=ARG1%256,。,C2=A

11、RG2/256,、,D2=ARG2%256,。,C3=RESULT/256,、,D3=RESULT%256,。,注:,C1,、,C2,、,C3,表示页码,,D1,、,D2,、,D3,表示页内位移。,例,1,:,(+,ARG1,ARG2,RESULT),设,ARG1,是变量在符号表或临时变量表入口,,ARG2,是常数在常数表中的地址。,解:,Load R3,D1/R30,Load R0,C1R3/R0(252,*,256+0)=(64512),Load R0,R0/R0,的内容为存放临时变量,T1,值的地址,Load R3,D2/R30,Add R0,C2R3/R0(254,*,256+0)=(

12、65024),Load R3,D3/R34,Load R3,C3R3/R3(252,*,256+4)=(64516),Store R0,R3/R3,内容为存放临时变量,T2,值的地址,+&T1&1&T2,上述四元式的地址表示,+645126502464516,C1=64512/256=252/T1,D1=64512%256=0,C2=65024/256=254/,常数,1,D2=65024%256=0,C3=64516/256=252/T2,D3=64516%256=4,10,例,2,:,(=,ARG1,0,RESULT),其中,ARG1,是常数地址。,解:,Load R3,D1/R38,Lo

13、ad R0,C1R3/R0(252*256+8)=(64520),Load R3,D3/R3255,Load R3,C3R3/R3(253*256+255)=(65023),Store R0,R3/R3,的内容为存放变量,a,值的地址,单个四元式的翻译,四元式的翻译关键是确定地址,约定如下:,指令的第一地址使用,R0,。,指令的第二地址使用,R3,(兼作变址寄存器)。,ARG1,、,ARG2,为变量地址或常数地址,,RESULT,一定是变量地址。,C1=ARG1/256,、,D1=ARG1%256,。,C2=ARG2/256,、,D2=ARG2%256,。,C3=RESULT/256,、,D3

14、RESULT%256,。,注:,C1,、,C2,、,C3,表示页码,,D1,、,D2,、,D3,表示页内位移。,=&T3 0&a,上述四元式的地址表示,=64520065023,C1=64520/256=252,D1=64520%256=8,C3=65023/256=253,D3=65023%256=255,11,对照表,一条四元式代码通常译成若干条汇编语句,为了便于转移四元式的翻译,应建立一张对照表,记录一个四元式所对应的汇编语句的个数以及汇编语句的编号。,对照表结构如下:,四元式编号,汇编语句条数,汇编语句编号,1,8,1,2,6,9,15,7.3,一个简单目标代码生成器,不考虑充分利用

15、寄存器,仅仅使用,R0,和,R3,。,指令的第一地址使用,R0,,指令的第二地址使用,R3,(兼作变址寄存器)。算法描述详见下一页。,12,0.procedure GenCode(op,arg1,arg2,result),/,一个简单目标代码生成器,1.c1arg1/256:d1arg1%256;,2.c2arg2/256:d2arg2%256;,3.c3result/256:d3result%256;,ment:R0(ARG1),5.output Load R3,:output d1:output,换行,6,output Load R0,:output c1:output R3:output

16、换行,7.if c1=252 or c1=253 then,/ARG1,是符号表或临时变量表的入口,8.output Load R0,R0:output,换行,9.end if,/ARG1,是常数表入口无需上述指令,ment:R0,运算结果,处理加法运算(,ARG20,),处理一元正运算(,ARG2=0,),处理减法运算(,ARG20,),/,详见下一页,处理一元负运算(,ARG2=0,),/,详见下一页,赋值运算(无需任何处理),ment:RESULT(R0),12.output Load R3,:output d3:output,换行,13.output Load R3,:output

17、c3:output R3:output,换行,14.output store R0,R3:output,换行,15.end procedure,13,/,处理减法运算(,ARG20,),comment:R0,运算结果,if op=-and arg20 then,output Load R3,:output d2:output,换行,if c2=252 or c2=253 then,/ARG2,是符号表或临时变量表的入口,output Load R3,:output c2:output R3:output,换行,output Sub R0,R3:output,换行,else,/ARG2,是常数表

18、地址,output Sub R0,:output c2:output R3,endl,;,end if,end if,/,处理一元负运算(,ARG2=0,),if op=-and arg2=0 then,/-ARG1=0-ARG1,output Load R3,R0:output,换行,/,将,ARG1,送,R3,output Load R0,0:output,换行,/,将,0,送,R0,output Sub R0,R3:output,换行,/R0-R3,送,R0,end if,14,实例,设源程序为:,a=2+(+b+1),,它的四元式代码为,+&b 0&T1,+&T1&1&T2,+&2&T

19、2&T3,=&T3 0&a,假设,整常数,1,在无符号整常数表中的地址为,65024,(,254*256+0,),整常数,2,在无符号整常数表中的地址为,65025,(,254*256+1,),变量,a,的符号表入口为,65023,(,253*256+255,),变量,b,的符号表入口为,65019,(,253*256+251,),临时变量,T1,的临时变量表入口为,64512,(,252*256+0,),临时变量,T2,的临时变量表入口为,64516,(,252*256+4,),临时变量,T3,的临时变量表入口为,64520,(,252*256+8,),实际四元式代码序列应为,+650190

20、64512,+645126502464516,+650256451664520,=645200 65023,15,假定四元式代码存放在文件,Quad.txt,中,经简单目标代码生成器加工,所生成的汇编语言目标程序存放在文件,Asm.txt,中,如图所示。,16,静态地址分配:,在程序运行前,将各变量的绑定于内存的某一单元地址。,可选择内存某区域(例第,251,页)为数据存储区。根据符号表,整型变量分配一个单元(,2Byte,),实型变量分配二个单元(,4Byte,),并将地址填入符号表和临时变量表的,addr,处。,7.4,静态地址分配,内存地址,(,2,字节),符号名,(,5,字节),种属,(,4Bit,),类型,(,4Bit,),未分配,a,0,0,0,0,简单,整型,未分配,b,0,0,0,0,简单,整型,符号表,第,251,页,251,页用于存放变量值,第,0,页,第,255,页,65023,64507,第,252,页,64511,65019,251*256+255=64511,251*256+251=64507,17,结束,18,

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服