体系结构 第2章.PPT

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2.5 指令格式的设计 混合型编码格式 提供若干种固定的指令字长。 以期达到既能够减少目标代码长度又能降低译码复杂度的目标。 32个64位通用寄存器(GPRs) R0,R1,…,R31 也被称为整数寄存器 R0的值永远是0 32个64位浮点数寄存器(FPRs) F0,F1,…,F31 2.6 MIPS指令集结构 介绍MIPS64的一个子集,简称为MIPS。 2.6.1 MIPS的寄存器 2.6 MIPS指令集结构 用来存放32个单精度浮点数(32位),也可以用来存放32个双精度浮点数(64位)。 存储单精度浮点数(32位)时,只用到FPR的一半,其另一半没用。 一些特殊寄存器 它们可以与通用寄存器交换数据。 例如,浮点状态寄存器用来保存有关浮点操作结果的信息。 2.6 MIPS指令集结构 MIPS的数据表示 整数 字节(8位) 半字(16位) 字(32位) 双字(64位) 浮点数 单精度浮点数(32位) 双精度浮点数(64位) 字节、半字或者字在装入64位寄存器时,用零扩展或者用符号位扩展来填充该寄存器的剩余部分。装入以后,对它们将按照64位整数的方式进行运算。 2.6.2 MIPS的数据表示 2.6 MIPS指令集结构 立即数寻址与偏移量寻址 立即数字段和偏移量字段都是16位的。 寄存器间接寻址是通过把0作为偏移量来实现的 16位绝对寻址是通过把R0(其值永远为0)作为基址 寄存器来完成的 MIPS的存储器是按字节寻址的,地址为64位 所有存储器访问都必须是边界对齐的 2.6.3 MIPS的数据寻址方式 2.6 MIPS指令集结构 寻址方式编码到操作码中 所有的指令都是32位的 操作码占6位 3种指令格式 2.6.4 MIPS的指令格式 2.6 MIPS指令集结构 I类指令 包括所有的load和store指令、立即数指令、,分支指令、寄存器跳转指令、寄存器链接跳转指令。 立即数字段为16位,用于提供立即数或偏移量。 2.6 MIPS指令集结构 load指令 访存有效地址:Regs[rs]+immediate 从存储器取来的数据放入寄存器rt store指令 访存有效地址:Regs[rs]+immediate 要存入存储器的数据放在寄存器rt中 立即数指令 Regs[rt] ← Regs[rs] op immediate 分支指令 转移目标地址:Regs[rs]+immediate,rt无用 寄存器跳转、寄存器跳转并链接 转移目标地址为Regs[rs] 2.6 MIPS指令集结构 R类指令 包括ALU指令、专用寄存器读/写指令、move指令等。 ALU指令 Regs[rd]← Regs[rs] funct Regs[rt] func为具体的运算操作编码 2.6 MIPS指令集结构 J类指令 包括跳转指令、跳转并链接指令、自陷指令、异常返回指令。 在这类指令中,指令字的低26位是偏移量,它与PC值相加形成跳转的地址。 2.6 MIPS指令集结构 MIPS指令可以分为四大类 load和store ALU操作 分支与跳转 浮点操作 符号的意义 x←ny:从y传送n位到x x,y←z:把z传送到x和y 2.6.5 MIPS的操作 2.6 MIPS指令集结构 下标:表示字段中具体的位; 对于指令和数据,按从最高位到最低位(即从左到右)的顺序依次进行编号,最高位为第0位,次高位为第1位,依此类推。 下标可以是一个数字,也可以是一个范围。     例如:Regs[R4]0:寄存器R4的符号位     Regs[R4]56..63:R4的最低字节 Mem:表示主存; 按字节寻址,可以传输任意个字节。 上标:用于表示对字段进行复制的次数。 例如:0 32:一个32位长的全0字段 2.6 MIPS指令集结构 符号##:用于两个字段的拼接,并且可以出现在数据传送的任何一边。 举例:R8、R10:64位的寄存器,则 Regs[R8]32..63 ←32 (Mem [Regs[R6]]0)24 ## Mem [Regs[R6]]表示的意义是: 以R6的内容作为地址访问内存,得到的字节按符 号位扩展为32位后存入R8的低32位,R8的高32位(即 Regs[R8]0..31)不变。 load和store指令 指令举例 指令名称 含 义 LD R2,20(R3) 装入双字 Regs[R2]←64 Mem[20+Regs[R3]] LW R2,40(R3) 装入字 Regs[R2]←64 (Me

您可能关注的文档

文档评论(0)

zzqky + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档