MIPS汇编语言

MIPS架构

MIPS架构是一种精简指令集(RISC)的处理器架构,包含大量的寄存器、指令数和字符。MIPS32的架构是固定长度的定期编码指令集,采用的是导入/存储(load/store)数据模型。

寄存器

在MIPS体系结构中有32个通用寄存器,在汇编程序中可以用编号表示,如$0~ 31 , 也 可 以 用 名 称 表 示 , 如 31,也可以用名称表示,如 31sp,$t1。

编号 名称 描述
$0 $zero 零号寄存器,值恒等于0
$1 $at 保留寄存器,用于处理大的常数
$2 - $3 $v0 - $v1 保留表达式或函数返回结果
$4 - $7 $a0 - $a3 作为函数的前4个参数
$8-$15 $t0 - $t7 供汇编程序使用的临时寄存器
$16-$23 $s0 - $s7 子函数使用时需要先保存原寄存器的值
$24-$25 $t8 - $9 供汇编程序的临时寄存器,补充 t 0 − t0- t0t7
$26-$27 $k0 - $k1 中断处理函数使用
28 $gp 全局指针
29 $sp 堆栈指针,指向堆栈的栈顶
30 $fp 保存栈指针
31 $ra 返回地址

指令集

R-type类型指令:

助记符 示例 示例含义
add add $1,$2,$3 $1=$2+$3
addu addu $1,$2,$3 $1=$2+$3
sub sub $1,$2,$3 $1=$2-$3
subu sub $1,$2,$3 $1=$2-$3
and and $1,$2,$3 $1=$2&$3
or or $1,$2,$3 $1=$2
xor xor $1,$2,$3 $1=$2^$3
nor nor $1,$2,$3 $1=~($2
slt slt $1,$2,$3 if($2<$3) $1=1 else $1=0
sltu sltu $1,$2,$3 if($2<$3) $1=1 else $1=0
sll sll $1,$2,10 $1=$2<<10
srl srl $1,$2,10 $1=$2>>10
sra sra $1,$2,10 $1=$2>>10
sllv sllv $1,$2,$3 $1=$2<<$3
srlv srlv $1,$2,$3 $1=$2>>$3
srav srav $1,$2,$3 $1=$2>>$3
jr jr $31 goto $31

I-type类型指令:

助记符 示例 示例含义
addi add $1,$2,100 $1=$2+100
addiu addu $1,$2,$3 $1=$2+$3
andi andi $1,$2,10 $1=$2&10
ori andi $1,$2,10 $1=$2
xori xori $1,$2,10 $1=$2 ^ 10
lui lui $1,100 $1=100*65536
lw lw $1,10($2) $1=memory[$2+10]
sw sw $1,10($2) memory[$2+10]=$1
beq beq $1,$2,10 if($1==$2)goto PC+4+40
slti slti $1,$2,10 if($2<10) $1 =1 else $1 = 0
sltiu sltiu $1,$2,10 if($2<10) $1=1 else $1=0

j-type类型指令:

助记符 示例 示例含义
j j 10000 goto 10000
jal jal 10000 $31 < -PC+4;goto 10000

程序结构

例子:
MIPS汇编语言_第1张图片
相关链接:
https://www.cnblogs.com/CoBrAMG/p/9237609.html
https://blog.csdn.net/sdreamq/article/details/50776404
https://blog.csdn.net/KoalaZB/article/details/52733910?locationNum=3

你可能感兴趣的:(MIPS汇编)