MIPS体系结构剖析,32个通用寄存器

MIPS汇编语言中,32个通用寄存器有不同的角色和用途,如0号寄存器始终为0,1号寄存器at供汇编器使用,v0和v1用于函数返回值,a0-a3作为前几个函数参数,t0-t9作为临时寄存器,s0-s7保存子过程变量,k0和k1保留给异常处理,gp用于全局变量访问,sp是堆栈指针,s8/fp作为第9个寄存器变量,ra存储返回地址。这些区分使不同编译器生成的代码具有兼容性。
摘要由CSDN通过智能技术生成
mips汇编有个约定(后来也有些变化,我们不管,o32,n32),32个通用寄存器不是一视同仁

  的,而是分成下列部分:

      寄存器号            符号名            用途

        0                 始终为0     看起来象浪费,其实很有用

        1                 at          保留给汇编器使用

        2-3               v0,v1       函数返回值

        4-7               a0-a3       前头几个函数参数

        8-15              t0-t7       临时寄存器,子过程可以不保存就使用

        24-25             t8,t9       同上

        16-23             s0-s7       寄存器变量,子过程要使用它必须先保存

                                      然后在退出前恢复以保留调用者需要的值

        26,27             k0,k1       保留给异常处理函数使用

        28                gp          global pointer;用于方便存取全局或者静态变量

        29                sp          stack pointer

        30                s8/fp       第9个寄存器变量;子过程可以用它做frame pointer

        31                 ra         返回地址

   硬件上这些寄存器并没有区别(除了0号),区分的目的是为了不同的编译器产生的代码可以通用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值