R-type |
|
|
|
add |
add $1,$2,$3 |
$1=$2+$3 |
其中rs=$2,rt=$3, rd=$1 |
addu |
addu $1,$2,$3 |
$1=$2+$3 |
其中rs=$2,rt=$3, rd=$1,无符号数 |
sub |
sub $1,$2,$3 |
$1=$2-$3 |
其中rs=$2,rt=$3, rd=$1 |
subu |
subu $1,$2,$3 |
$1=$2-$3 |
其中rs=$2,rt=$3, rd=$1,无符号数 |
and |
and $1,$2,$3 |
$1=$2 & $3 |
其中rs=$2,rt=$3, rd=$1 |
or |
or $1,$2,$3 |
$1=$2 | $3 |
其中rs=$2,rt=$3, rd=$1 |
xor |
xor $1,$2,$3 |
$1=$2 ^ $3 |
其中rs=$2,rt=$3, rd=$1(异或) |
nor |
nor $1,$2,$3 |
$1=~($2|$3) |
;其中rs=$2,rt=$3, rd=$1(或非) |
slt |
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 |
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 |
sll $1,$2,10 |
$1=$2<<10 |
rd <- rt << shamt ;shamt存放移位的位数, 也就是指令中的立即数,其中rt=$2, rd=$1 |
srl |
srl $1,$2,10 |
$1=$2>>10 |
rd <- rt >> shamt ;(logical) ,其中rt=$2, rd=$1 |
sra |
sra $1,$2,10 |
$1=$2>>10 |
rd <- rt >> shamt ;(arithmetic) 注意符号位保留 其中rt=$2, rd=$1 |
sllv |
sllv $1,$2,$3 |
$1=$2<<$3 |
rd <- rt << rs ;其中rs=$3,rt=$2, rd=$1 |
srlv |
srlv $1,$2,$3 |
$1=$2>>$3 |
rd <- rt >> rs ;(logical)其中rs=$3,rt=$2, rd=$1 |
srav |
srav $1,$2,$3 |
$1=$2>>$3 |
rd <- rt >> rs ;(arithmetic) 注意符号位保留 其中rs=$3,rt=$2, rd=$1 |
jr |
jr $31 |
goto $31 |
PC <- rs |
I-type |
|
|
|
addi |
addi $1,$2,100 |
$1=$2+100 |
rt <- rs + (sign-extend)immediate ;其中rt=$1,rs=$2 |
addiu |
addiu $1,$2,100 |
$1=$2+100 |
rt <- rs + (zero-extend)immediate ;其中rt=$1,rs=$2 |
andi |
andi $1,$2,10 |
$1=$2 & 10 |
rt <- rs & (zero-extend)immediate ;其中rt=$1,rs=$2 |
ori |
andi $1,$2,10 |
$1=$2 | 10 |
rt <- rs | (zero-extend)immediate ;其中rt=$1,rs=$2 |
xori |
andi $1,$2,10 |
$1=$2 ^ 10 |
rt <- rs xor (zero-extend)immediate ;其中rt=$1,rs=$2 |
lui |
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 |
bne $1,$2,10 |
if($1!=$2) goto PC+4+40 |
if (rs != rt) PC <- PC+4 + (sign-extend)immediate<<2 |
slti |
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 |
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 |
|
|
|
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 |