网站大量收购独家精品文档,联系QQ:2885784924

第二章 MIPS体系结构.pptx

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章 MIPS体系结构

第二章 MIPS体系结构;2.1 MIPS汇编语言风格 #:注释 ;:一行中多条指令用分号隔开 ::单词后面跟着冒号指标号,代码中的入口点和命名数据区的一个存储位置 三种指令格式(所有指令都是32位): R类型 I类型 J类型;(1)R型指令(从寄存器堆中取出两个操作数,计算结果写回寄存器堆) ;(2)I类型(用一个16位的立即数作为一个源操作数) g = g + 4; (in C) Lw $t0, 0($s3) # $t0=4 $s3=Address(4) add $s1,$s1,$t0 # g=g+4 (3)J类型(用一个26位的立即数作为跳转的目标地址) goto Label; (C语言) J label (MIPS指令) ;2.2 寄存器 ;gp: PIC:维护GOT(global offset table)指针(16章) 非PIC:作基指针(链接时确定位置的静态数据中部) lw ri,offset(gp) offset 16位,前后各32K 若没有gp,存储静态数据区域的值需要两条指令(获取地址,去存储数据) ;2.3 整数乘法部件及寄存器 MIPS CPU采用专用的整数乘法部件(可以执行两个通用寄存器的除法操作),并没有集成到流水线中去。 特殊寄存器:HI 、LO HI:乘法结果高32位,除法余数 LO:乘法结果低32位,除法商 mfhi/mflo rt:将hi/lo内容传输到通用寄存器rt mthi/mtlo rt:将通用寄存器rt内容传输到hi/lo(中断返回恢复现场) 结果寄存器互锁(运算未完成之前读取结果会使CPU停下等待);2.4 加载与存储:寻址方式 lw $1,offset($2) offset:有符号16位数字(-32768~32767),前后各32K 加载所需地址=offset+$2寄存器的值 2.5 存储器与寄存器的数据类型 ;(1)字节byte和halfword的加载方式 MIPS不能直接做8位和16位精度的算术运算 符号扩展:lb、lh 零扩展:lbu、lhu (2)未对齐加载 地址对齐:使用访存指令读取或写入数据单元时,目标地址必须是所访问之数据单元字节数的整数倍 未对齐操作: ulw(unaligned load word) ulh(unaligned load halfword) ;(3)浮点数据 32位处理器:加载一个单精度的数据放入一个偶数号的浮点寄存器中 双精度(汇编指令展开为两个连续的寄存器加载) l.d $f2,24(t1) lwc1 $f2,24(t1) lwc1 $f3,28(t1) MIPS/SGI规则:八字节长的双精度???点变量对齐到八字节的地址边界上;2.6 汇编器合成指令 (1)LI li d,j ? ori d,$zero,j 0=j=65535 ? addiu d,$zero,j -32768=j0 ? lui d,hi16(j) 32位整数的其他j情形 ori d,d,lo16(j) 将一个立即数存入一个通用寄存器 (2)LA 将一个地址(通常是一个标签)存入一个通用寄存器 (3)MOVE move d,s ? or d,s,$zero 将一个寄存器的值存入另一个寄存器;2.7 MIPS64:64位的扩展 (1)保留所有的32位体系结构的指令 (2)MIPS32指令完全兼容(寄存器存放的是32位值的64位符号扩展) (3)定义尽可能多的MIPS32指令(兼容性及做64位指令);2.8 基本地址空间;(1)kuseg:0x0000_0000~0x7FFF_FFFF(2G) 用户态可用地址,需MMU转换 (2)kseg0:0x8000_0000~0x9FFF_FFFF(512M) 最高位清零映射到低端512M的物理地址,unmapped,cached。无MMU,存放程序和数据;有MMU,存放操作系统核心。 (3)kseg1:0xA000_0000~0xBFFF_FFFF(512M) 最高三位清零映射到低端512M的物理地址,unmapped,uncached。唯一一个系统重启能正常工作的地址空间,复位入口地址0xBFC0_0000,相应物理地址0x1FC0_0000。存储初始的程序ROM或用作I/O寄存器。 (4)kseg2:0xC0

文档评论(0)

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

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

1亿VIP精品文档

相关文档