Chinaunix首页 | 论坛 | 博客
  • 博客访问: 217928
  • 博文数量: 32
  • 博客积分: 410
  • 博客等级: 一等列兵
  • 技术积分: 396
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-03 16:58
文章分类

全部博文(32)

文章存档

2013年(17)

2012年(15)

我的朋友

分类: 嵌入式

2012-04-05 18:54:22

MIPS中32个通用寄存器常用命名

存器编号      助记符       用法
  $0          zero    

 $1            at     (Assembly Temporary汇编缓存)保留给汇编使用
 $2~$3        v0,v1     子函数调用的返回结果。 就是return 返回的那些东西保存的地方,这个简单。
 $4~$7        a0,a3     (Arguments)子函数调用的前几个参数,就像行参保存的东西。
 $8~$15       t0,t7     暂时变量,子函数使用时不需要保存与恢复,就像子函数中使用tmp这样的临
                        时变量。
 $16~$23      s0,s7      子函数寄存器变量。子函数写入时必须保存其值并在返回前恢复原值,从而
                         调用函数看到的这些寄存器的值没有变化。
 $24~$25        t8,t9      同t0 t7等 。
 $26~$27      k0,k1     异常使用的。保留给中断或自陷处理程序使用,其值可能在你眼皮底下改变。
 $28          gp     (Global Pointer)全局指针,这个比较有意思。一些运行系统维护这个指针以
                        便于存取static和extern 变量。
 $29           sp     (Stack Pointer)栈指针
 $30         s8/fp    

第九个寄存器变量,相当于s8;

如果需要的话作为帧指针,否则作sacved register。
 $31      ra     子程序的返回地址

linux上一些定义:
#define zero    $0      /* wired zero */
#define AT      $1      /* assembler temp  - uppercase because of ".set at" */
#define v0      $2      /* return value */
#define v1      $3
#define a0      $4      /* argument registers */
#define a1      $5
#define a2      $6
#define a3      $7
#define t0      $8      /* caller saved */
#define t1      $9
#define t2      $10
#define t3      $11
#define t4      $12
#define t5      $13
#define t6      $14
#define t7      $15
#define s0      $16     /* callee saved */
#define s1      $17
#define s2      $18
#define s3      $19
#define s4      $20
#define s5      $21
#define s6      $22
#define s7      $23
#define t8      $24     /* caller saved */
#define t9      $25
#define jp      $25     /* PIC jump register */
#define k0      $26     /* kernel scratch */
#define k1      $27
#define gp      $28     /* global pointer */
#define sp      $29     /* stack pointer */
#define fp      $30     /* frame pointer */
#define s8    $30    /* same like fp! */
#define ra      $31     /* return address */
阅读(4435) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:linux-mips中经常看到的一些伪指令

给主人留下些什么吧!~~