版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,第7章 目标代码生成,7.1 汇编语言虚拟计算机模型 7.2 从四元式到汇编语言的翻译 7.3 一个简单目标代码生成器 7.4静态地址分配,2,任务 将中间代码变换成目标代码,实现源程序的最后翻译。由于涉及到目标机器的系统结构,此阶段的工作最复杂。 目标代码的形式 已定位的机器语言代码 编译后可立即执行。 待装配的机器语言代码模块 目前大多数编译系统所产生的目标代码均为可重定位的机器指令。在执行前,将它和系统函数(源程序中使用)的机器指令连接成一个程序,对未确定的地址进行定位(假设起始地址为0),形成可执行的机器语言代码程序。 在执行时,操作系统可将目标代码装入内存的任意位置。 汇编语言代
2、码 需经汇编程序翻译,将其转换成可执行的机器语言代码。 由于硬件厂商提供机器的汇编程序,所以编译程序的目标代码通常为汇编语言。 目标代码生成要求 目标代码数与中间代码数的比值尽可能小(即目标代码尽可能少)。 充分利用寄存器,减少访问内存的次数。 删除不必要的临时变量。,3,7.1 汇编语言虚拟计算机模型,内存 共有64k个字,1个字有16个二进制位(2Byte),内存地址标识为0-65535。 划分为256页,页号0-255,每页的长度为256个字,页内位移为0-255。 地址计算:页号*256+页内位移。 255页用作系统堆栈区。 寄存器 通用寄存器(2字节) 共有4个,分别标记为R0、R1
3、、R2、R3,用于存放操作数和计算结果,R3还可用于变址寻址。 标志寄存器FlagReg 保存CMP指令比较结果。 堆栈寄存器TopReg(2字节) TopReg用作系统栈顶指针。,4,指令系统 指令格式:,操作码 Read 从键盘读一个字到第一地址。 Write从第一地址写一个字到屏幕。 Load从第二地址将字装入第一地址。 Store将第一地址中的字存放到第二地址。 Call控制转移到第二地址指定的内存单元,断点保留在系统堆栈中。 Ret由系统堆栈获得断点,返回。 Add将第一地址中的字加上第二地址中的字,结果保留第一地址中。 Sub Mul Div Cmp 将第一地址中的字和第二地址中的
4、字比较,由系统置位FlagReg。 FlagReg=-1,表示第一地址中的字小于第二地址中的字。 FlagReg=1,表示第一地址中的字大于第二地址中的字。 FlagReg=0,表示第一地址中的字等于第二地址中的字。,5,JMP无条件转移到第二地址指定的内存单元。 JMPNEG若FlagReg中的值0,转移到第二地址指定的内存单元。 JMPPOS若FlagReg中的值0,转移到第二地址指定的内存单元。 JMPZERO若FlagReg中的值0,转移到第二地址指定的内存单元。 HALT终止程序执行。 第一地址为寄存器(R0-R3) 寻址方式和第二地址 直接地址寻址(M) Load Ri , MXX
5、(XX)Ri XX范围0-255(第0页),用16进制表示。 寄存器寻址(R) Load Ri , Rj(Rj)Ri 间址寄存器寻址(R) Load Ri , Rj(Rj)Ri 直接数访问(D) Load Ri , XXXXRi XX范围0-255,用16进制表示。 变址寻址(C R3) Load Ri , CR3(C*256+(R3)Ri C为常数(范围0-255),用16进制表示。,6,指令分类 零地址指令 Ret、Halt A型一地址指令(无第二地址) Write、Read B型一地址指令(无第一地址) Call、Jmp、JmpNeg、JmpZero、JmpPos 二地址指令 Load、
6、Store、Add、Sub、Mul、Div、Cmp,7,7.2 从四元式到汇编语言的翻译,符号表、常数表和临时变量表的内存位置 四元式中含有变量在符号表和临时变量表中的入口,以及常数在常数表中的地址,所以先确定符号表、临时变量表和常数表在内存中的位置,然后再讨论四元式的翻译。 无符号实常数表(第254页,按地址递减使用) 起始地址:254*256+255=65279,每个实常数占用2个字(4Byte)。 无符号整常数表(第254页,按地址递增使用) 起始地址:254*256=65024,每个整常数占用1个字(2Byte)。 符号表(第252、253页,按地址递减使用) 起始地址:253*256
7、+255=65023,每个标识符占用4个字(8Byte)。 临时变量表(第252、253页,按地址递增使用) 起始地址:252*256=64512,每个临时变量占用4个字(8Byte)。 注:四元式中最多允许出现512/4=128个不同的变量,包括临时变量在内。,8,虚拟内存示意图 (共64K、分255页、每页255字节),9,设源程序为:a=2+(+b+1),它的四元式代码为 + 2.c2arg2/256:d2arg2%256; 3.c3result/256:d3result%256; ment:R0(ARG1) 5.output Load R3,:output d1:output 换行 6
8、output Load R0,: output c1: output R3 :output 换行 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:outp
9、ut 换行 13.output Load R3, :output c3:output R3 :output 换行 14.output store R0,R3 :output 换行 15. end procedure,14,/处理减法运算(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 S
10、ub R0,R3:output 换行 else/ARG2是常数表地址 output Sub R0,:output c2:output R3endl; 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,15,实例 设源程序为:a=2+(+b+1),它的四元式代码为 + &b 0 &T1
11、+ &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(252*256+0) 临时变量T2的临时变量表入口为64516(252*256+4) 临时变量T3的临时变量表入口为64520(252*256+8) 实际四元式代码序列应为 +65019064512 +645126502464516 +650256451664520 =645200 65023,16,假定四元式代码存放在文件Quad.txt中,经简单目标代码生成器加工,所生成的汇编语言目标程序存放在文件Asm.txt中,如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 搜索引擎开源项目课程设计
- 基于SPI的Flash控制器视频课程设计
- 基于SPI的Flash读写控制器设计说明课程设计
- 基于OCR的身份证信息提取系统在设计开发课程设计
- 嵌入技术交易监控课程设计
- NLP情感分析工具评测方法课程设计
- 焊接材料制造工创新实践水平考核试卷含答案
- 车间通风系统课程设计
- 图像边缘检测灰度化项目课程设计
- NLP情感分析工具的发展趋势课程设计
- 陕西省专业技术人员继续教育专业课《2025教师职业能力升级与素养深化(一)》题库及答案
- 10KV高压配电设备技术协议书
- 大众急救知识培训课件
- 1.【新课标】水平三 体育单元教学计划+课时计划【32课时教案】
- 2025年西安工程大学辅导员招聘考试笔试试题(含答案)
- 医院能耗政策和参照标准
- 工程服务采购管理办法
- 黑龙江省代建制管理办法
- 拥军秧歌教学课件
- 《市域(郊)铁路设计规范》条文说明
- 2025年二房东转租合同协议范本
评论
0/150
提交评论