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