MIPS寄存器和指令总结


每次学计组的时候总要去查MIPS的寄存器和指令,索性自己总结了如下的知识点,方便之后查看


32个通用寄存器

RegisterNameUsage
$0$zero常量0(constant value 0)
$1$at保留给汇编器(Reserved for assembler)
$2-$3 v 0 − v0- v0v1函数调用返回值(values for results and expression evaluation)
$4-$7 a 0 − a0- a0a3函数调用参数(arguments)
$8-$15 t 0 − t0- t0t7暂时的(或随便用的)
$16-$23 s 0 − s0- s0s7保存的(或如果用,需要SAVE/RESTORE的)(saved)
$24-$25 t 8 − t8- t8t9暂时的(或随便用的)
$28$gp全局指针(Global Pointer)
$29$sp堆栈指针(Stack Pointer)
$30$fp帧指针(Frame Pointer)
$31$ra返回地址(return address)

32个寄存器(详细)

Register NameNumberUsage
$zero0Constant 0
$at1Reserved for assembler
$v02Expression evaluation and results of a function
$v13Expression evaluation and results of a function
$a04Argument 1
$a15Argument 2
$a26Argument 3
$a37Argument 4
$t08Temporary (not preserved across call)
$t19Temporary (not preserved across call)
$t210Temporary (not preserved across call)
$t311Temporary (not preserved across call)
$t412Temporary (not preserved across call)
$t513Temporary (not preserved across call)
$t614Temporary (not preserved across call)
$t715Temporary (not preserved across call)
$s016Saved temporary (preserved across call)
$s117Saved temporary (preserved across call)
$s218Saved temporary (preserved across call)
$s319Saved temporary (preserved across call)
$s420Saved temporary (preserved across call)
$s521Saved temporary (preserved across call)
$s622Saved temporary (preserved across call)
$s723Saved temporary (preserved across call)
$t824Temporary (not preserved across call)
$t925Temporary (not preserved across call)
$k026Reserved for OS kernel
$k127Reserved for OS kernel
$gp28Pointer to global area
$sp29Stack pointer
$fp or s830Frame pointer
$ra31Return address (used by function call)

MIPS指令集(31条)

助记符用法解释注释
R-type
addadd $1,$2,$3$1=$2+$3其中rs=$2,rt=$3, rd=$1
adduaddu $1,$2,$3$1=$2+$3其中rs=$2,rt=$3, rd=$1,无符号数
subsub $1,$2,$3$1=$2-$3其中rs=$2,rt=$3, rd=$1
subusubu $1,$2,$3$1=$2-$3其中rs=$2,rt=$3, rd=$1,无符号数
andand $1,$2,$3$1=$2 & $3其中rs=$2,rt=$3, rd=$1
oror $1,$2,$3$1=$2 | $3其中rs=$2,rt=$3, rd=$1
xorxor $1,$2,$3$1=$2 ^ $3其中rs=$2,rt=$3, rd=$1(异或)
nornor $1,$2,$3$1=~($2|$3);其中rs=$2,rt=$3, rd=$1(或非)
sltslt $1,$2,$3if($2<$3) $1=1 else $1=0if (rs < rt) rd=1 else rd=0 ;其中rs=$2,rt=$3, rd=$1
sltusltu $1,$2,$3if($2<$3) $1=1 else $1=0if (rs < rt) rd=1 else rd=0 ;其中rs=$2,rt=$3, rd=$1 (无符号数)
sllsll $1,$2,10$1=$2<<10rd <- rt << shamt ;shamt存放移位的位数, 也就是指令中的立即数,其中rt=$2, rd=$1
srlsrl $1,$2,10$1=$2>>10rd <- rt >> shamt ;(logical) ,其中rt=$2, rd=$1
srasra $1,$2,10$1=$2>>10rd <- rt >> shamt ;(arithmetic) 注意符号位保留 其中rt=$2, rd=$1
sllvsllv $1,$2,$3$1=$2<<$3rd <- rt << rs ;其中rs=$3,rt=$2, rd=$1
srlvsrlv $1,$2,$3$1=$2>>$3rd <- rt >> rs ;(logical)其中rs=$3,rt=$2, rd=$1
sravsrav $1,$2,$3$1=$2>>$3rd <- rt >> rs ;(arithmetic) 注意符号位保留 其中rs=$3,rt=$2, rd=$1
jrjr $31goto $31PC <- rs
I-type
addiaddi $1,$2,100$1=$2+100rt <- rs + (sign-extend)immediate ;其中rt=$1,rs=$2
addiuaddiu $1,$2,100$1=$2+100rt <- rs + (zero-extend)immediate ;其中rt=$1,rs=$2
andiandi $1,$2,10$1=$2 & 10rt <- rs & (zero-extend)immediate ;其中rt=$1,rs=$2
oriandi $1,$2,10$1=$2 | 10rt <- rs | (zero-extend)immediate ;其中rt=$1,rs=$2
xoriandi $1,$2,10$1=$2 ^ 10rt <- rs xor (zero-extend)immediate ;其中rt=$1,rs=$2
luilui $1,100$1=100*65536rt <- immediate*65536 ;将16位立即数放到目标寄存器高16 位,目标寄存器的低16位填0
lwlw $1,10($2)$1=memory[$2 +10]rt <- memory[rs + (sign-extend)immediate] ;rt=$1,rs=$2
swsw $1,10($2)memory[$2+10] =$1memory[rs + (sign-extend)immediate] <- rt ;rt=$1,rs=$2
beqbeq $1,$2,10if($1==$2) goto PC+4+40if (rs == rt) PC <- PC+4 + (sign-extend)immediate<<2
bnebne $1,$2,10if($1!=$2) goto PC+4+40if (rs != rt) PC <- PC+4 + (sign-extend)immediate<<2
sltislti $1,$2,10if($2<10) $1=1 else $1=0if (rs <(sign-extend)immediate) rt=1 else rt=0 ; 其中rs=$2,rt=$1
sltiusltiu $1,$2,10if($2<10) $1=1 else $1=0if (rs <(zero-extend)immediate) rt=1 else rt=0 ; 其中rs=$2,rt=$1
J-type
jj 10000goto 10000PC <- (PC+4)[31…28],address,0,0 ;address=10000/4
jaljal 10000$31<-PC+4; goto 10000$31<-PC+4;PC <- (PC+4)[31…28],address,0,0 ;address=10000/4

其他指令

助记符用法解释注释
bnezbnez $t0 ,trylkif $t0 != 0 ,goto trylk
beqzbeqz $t0 ,trylkif $t0 ==0, goto trylk
伪指令
notnot $1,$2对应MIPS,nor $1, 2 , 2, 2,zero或非操作
movemove $1,$2对应MIPS , or $1, 2 , 2, 2,zero
lili $1,$2对应MIPS,ori 1 , 1, 1,zero,cc为16位立即数

会不断更新~

若有错误,不吝指正~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Joshua_yi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值