MIPS指令

MIPS常用指令集

lb/lh/lw: 从存储器中读取一个byte/half word/word的数据到寄存器中.如lb $1, 0($2)
sb/sh/sw: 把一个byte/half word/word的数据从寄存器存储到存储器中.如 sb $1, 0($2)
add/addu:把两个定点寄存器的内容相加add $1,$2,$3($1=$2+$3);u为不带符号加。

addi/addiu:把一个寄存器的内容加上一个立即数add $1,$2,#3($1=$2+3);u为不带符号加。
sub/subu:把两个定点寄存器的内容相减。
div/divu:两个定点寄存器的内容相除。
mul/mulu:两个定点寄存器的内容相乘。
and/andi:与运算,两个寄存器中的内容相与and $1,$2,$3($1=$2 & $3);i为立即数。
or/ori:或运算。
xor/xori:异或运算。
beq/beqz/benz/bne:条件转移eq相等,z零,ne不等。
j/jr/jal/jalr:j直接跳转;jr使用寄存器跳转;
lui:把一个16位的立即数填入到寄存器的高16位,低16位补零。
sll/srl:逻辑左移/右移sll $1,$2,#2。
slt/slti/sltui:如果$2的值小于$3,那么设置$1的值为1,否则设置$1的值为0。slt $1,$2,$3。
mov/movz/movn:复制,n为负,z为零。mov $1,$2; movz $1,$2,$3($3为零则复制$2到$1)。
trap:根据地址向量转入管态。
eret:从异常中返回到用户态。

32个通用寄存器

0( z e r o ) : 永 远 返 回 值 为 01 ( zero): 永远返回值为0 1( zero):01(at): 用做汇编器的暂时变量
2-3( v 0 − v0- v0v1): 子函数调用返回结果
4-7( a 0 − a0- a0a3): 子函数调用的参数
8-15( t 0 − t0- t0t7): 暂时变量,子函数使用时不需要保存与恢复
16-23( s 0 − s0- s0s7): 子函数寄存器变量。子函数必须保存和恢复使用过的变量在函数返回之前,从而调用函数知道这些寄存器的值没有变化。
24-25( t 8 − t8- t8t9): 暂时变量,子函数使用时不需要保存与恢复
26-27( k 0 − k0- k0k1): 通常被中断或异常处理程序使用作为保存一些系统参数
28( g p ) : 全 局 指 针 。 一 些 运 行 系 统 维 护 这 个 指 针 来 更 方 便 的 存 取 “ s t a t i c “ 和 ” e x t e r n ” 变 量 。 29 ( gp): 全局指针。一些运行系统维护这个指针来更方便的存取“static“和”extern”变量。 29( gp)便staticextern29(sp): 堆栈指针
30( s 8 / s8/ s8/fp): 第9个寄存器变量。子函数可以用来做桢指针
31($ra): 子函数的返回地
cp0:协处理器0,MIPS对CPU的控制用cp0完成

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值