4.2 MIPS指令集体系
1 指令集
1.1 CISC RISC指令集

CISC vs RISC



1.2 指令的分类



比如2+3 操作码就是加法这个操作,操作数就是2和3

1.3 指令的寻址方式

间接寻址可当成c程序中的一个指针

操作数寻址

1.4 MIPS指令集(长度32位)

前6位为操作位(操作码)
R型

rs\rt\rd都是寄存器,前两个是原寄存器(操作数),最后一个是目标寄存器,地址长度5位
op码始终全为0,通过funct区分
例子:加法funct:32(注意汇编语言:目标寄存器写在前面,而机器则是写在后面)

GPR可简单理解成一个类数组
例子:减法funct:34

例子:左移(func:0;sa:x,rs=0)

例子:SLT(大小比较)

例子:JR

在内存当中,每一条指令占4个地址,PC就是负责+4这个动作
如果想跳转到一个比较远的地址,就需要用到 JR 指令
把rs寄存器里的32位取出来,存到PC寄存器里
I型(引入immediate)

ADD

(需要把16位的立即数有符号扩展成32位)
因为寄存器里的是32位,rs\rt是地址
AND

SLTI

LW

immediate存到是offset(偏移量)
LH(存半个字)

LUI

SW(和前面的移地址反过来)

BEQ

PC+4+4*立即数(也可以理解为末尾添加两个0)(立即数最低两位肯定是0)
BNE

J类型(跳转范围更大)
J

PC(高4位)+立即数+最后添两个0=32位
JAL

比J多了一个把返回的值存在第31位寄存器里
3.1 示例:计算10个整数的和

附表


浙公网安备 33010602011771号