MIPS寄存器详解

MIPS有32个通用寄存器( 0 31),各寄存器的功能及汇编程序中使用约定如下:
下表描述32个通用寄存器的别名和用途
这里写图片描述

下面给以详细说明:
0: zero,该寄存器总是返回零,为0这个有用常数提供了一个简洁的编码形式。
move t0, t1
实际为
add t0, 0, t1使 1:即 atI1632luiaddiMIPS at的原因之一。
2.. 3:( v0 v1)用于子程序的非浮点结果或返回值,对于子程序如何传递参数及如何返回,MIPS范围有一套约
定,堆栈中少数几个位置处的内容装入CPU寄存器,其相应内存位置保留未做定义,当这两个寄存器不够存
放返回值时,编译器通过内存来完成。
4.. 7:( a0 a3)用来传递前四个参数给子程序,不够的用堆栈。a0-a3和v0-v1以及ra一起来支持子程序/过程
调用,分别用以传递参数,返回结果和存放返回地址。当需要使用更多的寄存器时,就需要堆栈(stack)
了,MIPS编译器总是为参数在堆栈中留有空间以防有参数需要存储。
8.. 15:( t0 t7)临时寄存器,子程序可以使用它们而不用保留。
16.. 23:( s0 s7)保存寄存器,在过程调用过程中需要保留(被调用者保存和恢复,还包括 fp ra),MIPS
提供了临时寄存器和保存寄存器,这样就减少了寄存器溢出(spilling,即将不常用的变量放到存储器的过程),
编译器在编译一个叶(leaf)过程(不调用其它过程的过程)的时候,总是在临时寄存器分配完了才使用需要
保存的寄存器。
24.. 25:( t8 t9)同( t0 t7)
26.. 27:( k0, k1)为操作系统/异常处理保留,至少要预留一个。 异常(或中断)是一种不需要在程序中显示
调用的过程。MIPS有个叫异常程序计数器(exception program counter,EPC)的寄存器,属于CP0寄存器,
用于保存造成异常的那条指令的地址。查看控制寄存器的唯一方法是把它复制到通用寄存器里,指令mfc0
(move from system control)可以将EPC中的地址复制到某个通用寄存器中,通过跳转语句(jr),程序可以返
回到造成异常的那条指令处继续执行。MIPS程序员都必须保留两个寄存器 k0 k1,供操作系统使用。
发生异常时,这两个寄存器的值不会被恢复,编译器也不使用k0和k1,异常处理函数可以将返回地址放到这
两个中的任何一个,然后使用jr跳转到造成异常的指令处继续执行。
28:( gp)为了简化静态数据的访问,MIPS软件保留了一个寄存器:全局指针gp(global pointer, gp)gp32KBgpgp64KB 29:( sp)MIPS使使 30:( fp)GNUMIPSC使(framepointer),SGIC使使 s8),这节省了调用和返回开销,但增加了代码生成的复杂性。
31:( ra)存放返回地址,MIPS有个jal(jump-and-link,跳转并 链接)指令,在跳转到某个地址时,把下一条指令的
地址放到 ra a0~ a3,jalXX v0, v1,使jr ra返回。

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MIPS寄存器文件是MIPS处理器中的一个重要组成部分,主要用于存储MIPS指令的操作数和运算结果。MIPS寄存器文件的设计原理可以分为以下几个方面: 1. 寄存器文件的大小:MIPS寄存器文件的大小通常为32位,即可以存储32位的数据。在MIPS处理器中,寄存器文件的大小是固定的,不可以改变。 2. 寄存器文件的寄存器数量:MIPS寄存器文件中总共有32个寄存器,每个寄存器都可以存储32位的数据。这些寄存器可以用于存储MIPS指令的操作数和运算结果。 3. 寄存器文件的访问方式:MIPS寄存器文件的访问方式是通过寄存器编号进行访问的。每个寄存器都有一个唯一的编号,可以通过这个编号访问对应的寄存器。在MIPS汇编语言中,寄存器的编号通常用$符号表示,例如$0表示寄存器0,$1表示寄存器1,以此类推。 4. 寄存器文件的寄存器内容:MIPS寄存器文件中的每个寄存器都有一个特定的用途。例如,$zero寄存器始终为0,$sp寄存器用于存储栈指针,$ra寄存器用于存储返回地址等。 5. 寄存器文件的读写方式:MIPS寄存器文件的读写方式是同步的,即在每个时钟周期中,寄存器文件只能读取或写入一个寄存器的数据。此外,寄存器文件中的数据可以同时读取,但是不能同时写入。 总的来说,MIPS寄存器文件的设计原理主要包括寄存器文件的大小、寄存器数量、访问方式、寄存器内容和读写方式等方面。这些设计原理可以保证MIPS处理器的高效运行,并且方便编写MIPS汇编语言程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值