目录
  1. 1. 31条MIPS指令集
mips指令集

31条MIPS指令集

助记符 指令格式 示例 示例含义 操作及其解释
Bit # 31..26 25..21 20..16 15..11 10..6 5..0
R-type op rs rt rd shamt func
add 000000 rs rt rd 00000 100000 add $1,$2,$3 $1=$2+$3 rd <- rs + rt
其中rs=$2,rt=$3, rd=$1
addu 000000 rs rt rd 00000 100001 addu $1,$2,$3 $1=$2+$3 rd <- rs + rt
其中rs=$2,rt=$3, rd=$1,无符号数
sub 000000 rs rt rd 00000 100010 sub $1,$2,$3 $1=$2-$3 rd <- rs - rt
其中rs=$2,rt=$3, rd=$1
subu 000000 rs rt rd 00000 100011 subu $1,$2,$3 $1=$2-$3 rd <- rs - rt
其中rs=$2,rt=$3, rd=$1,无符号数
and 000000 rs rt rd 00000 100100 and $1,$2,$3 $1=$2 & $3 rd <- rs & rt
其中rs=$2,rt=$3, rd=$1
or 000000 rs rt rd 00000 100101 or $1,$2,$3 $1=$2 | $3 rd <- rs | rt
其中rs=$2,rt=$3, rd=$1
xor 000000 rs rt rd 00000 100110 xor $1,$2,$3 $1=$2 ^ $3 rd <- rs xor rt
其中rs=$2,rt=$3, rd=$1(异或)
nor 000000 rs rt rd 00000 100111 nor $1,$2,$3 $1=~($2 | $3) rd <- not(rs | rt)
其中rs=$2,rt=$3, rd=$1(或非)
slt 000000 rs rt rd 00000 101010 slt $1,$2,$3 if($2<$3)
$1=1
else
$1=0
if (rs < rt)
rd=1 else rd=0
其中rs=$2,rt=$3, rd=$1
sltu 000000 rs rt rd 00000 101011 sltu $1,$2,$3 if($2<$3)
$1=1
else
$1=0
if (rs < rt)
rd=1 else rd=0
其中rs=$2,rt=$3, rd=$1 (无符号数)
sll 000000 00000 rt rd shamt 000000 sll $1,$2,10 $1=$2<<10 rd <- rt << shamt
shamt存放移位的位数,也就是指令中的立即数
其中rt=$2, rd=$1
srl 000000 00000 rt rd shamt 000010 srl $1,$2,10 $1=$2>>10 rd <- rt >> shamt
(logical)
其中rt=$2, rd=$1
sra 000000 00000 rt rd shamt 000011 sra $1,$2,10 $1=$2>>10 rd <- rt >> shamt
(arithmetic)
注意符号位保留
其中rt=$2, rd=$1
sllv 000000 rs rt rd 00000 000100 sllv $1,$2,$3 $1=$2<<$3 rd <- rt << rs
其中rs=$3,rt=$2, rd=$1
srlv 000000 rs rt rd 00000 000110 srlv $1,$2,$3 $1=$2>>$3 rd <- rt >> rs
(logical)
其中rs=$3,rt=$2, rd=$1
srav 000000 rs rt rd 00000 000111 srav $1,$2,$3 $1=$2>>$3 rd <- rt >> rs
(arithmetic)
注意符号位保留
其中rs=$3,rt=$2, rd=$1
jr 000000 rs 00000 00000 00000 001000 jr $31 goto $31 PC <- rs
I-type op rs rt immediate immediate immediate
addi 001000 rs rt immediate immediate immediate addi $1,$2,100 $1=$2+100 rt <- rs + (sign-extend)immediate
其中rt=$1,rs=$2
addiu 001001 rs rt immediate immediate immediate addiu $1,$2,100 $1=$2+100 rt <- rs + (zero-extend)immediate
其中rt=$1,rs=$2
andi 001100 rs rt immediate immediate immediate andi $1,$2,10 $1=$2 & 10 rt <- rs & (zero-extend)immediate
其中rt=$1,rs=$2
ori 001101 rs rt immediate immediate immediate andi $1,$2,10 $1=$2 | 10 rt <- rs | (zero-extend)immediate
其中rt=$1,rs=$2
xori 001110 rs rt immediate immediate immediate andi $1,$2,10 $1=$2 ^ 10 rt <- rs xor (zero-extend)immediate
其中rt=$1,rs=$2
lui 001111 rs rt immediate immediate immediate lui $1,100 $1=100*65536 rt <- immediate*65536
将16位立即数放到目标寄存器高16位,目标寄存器的低16位填0
lw 100011 rs rt immediate immediate immediate lw $1,10($2) $1=memory[$2+10] rt <- memory[rs + (sign-extend)immediate]
rt=$1,rs=$2
sw 101011 rs rt immediate immediate immediate sw $1,10($2) memory[$2+10]=$1 memory[rs + (sign-extend)immediate] <- rt
rt=$1,rs=$2
beq 000100 rs rt immediate immediate immediate beq $1,$2,10 if($1==$2)
goto PC+4+40
if (rs == rt)
PC <- PC+4 + (sign-extend)immediate<<2
bne 000101 rs rt immediate immediate immediate bne $1,$2,10 if($1!=$2)
goto PC+4+40
if (rs != rt)
PC <- PC+4 + (sign-extend)immediate<<2
slti 001010 rs rt immediate immediate immediate slti $1,$2,10 if($2<10)
$1=1
else
$1=0
if (rs <(sign-extend)immediate)
rt=1
else
rt=0
其中rs=$2,rt=$1
sltiu 001011 rs rt immediate immediate immediate sltiu $1,$2,10 if($2<10)
$1=1
else
$1=0
if (rs <(zero-extend)immediate)
rt=1
else
rt=0
其中rs=$2,rt=$1
J-type op address address address address address
j 000010 address address address address address j 10000 goto 10000 PC <- (PC+4)[31..28]
address,0,0
address=10000/4
jal 000011 address address address address address jal 10000 $31<-PC+4;
goto 10000
$31<-PC+4
PC <- (PC+4)[31..28]
address,0,0
address=10000/4

图

文章作者: Sakura式
文章链接: http://yoursite.com/2020/11/20/mips%E6%8C%87%E4%BB%A4%E9%9B%86/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Hexo
打赏
  • 微信
  • 支付寶