CPU单指令处理器设计

知识

MIPS汇编语言

数量单位

image-20211224211143868

MIPS架构标准寄存器

1.32个32bit的通用寄存器

寄存器编号 寄存器名 寄存器用途
0 zero 永远返回0
1 $at 汇编保留寄存器(不可用作其他用途)
2-3 v0-v1 (value的简写)存储表达式或者函数的返回值
4-7 a0-a3 (Argument简写)存储子程序的前4个参数,在子程序调用过程中释放
8-15 t0-t7 (temp简写)临时变量,同上调用时不保存
16-23 s0-s7 (Save or Static简)静态变量?调用时保存
24-25 t8-t9 (Temp简写)算是前面0-7的继续,属性同t0-t7
26-27 k0-k1 (break off简写)中断函数返回值,不可做其他用途
28 gp (GlobalPointer简写)指向静态数据块的中间地址
29 $sp (Stack Pointer简写)栈指针,指向栈顶
30 s8/fp (Save / Frame Pointer)帧指针
31 $ra 返回地址,目测不可用作其他用途

2.PC 无法直接修改,通过跳转指令可以改动

3.HI 和 LO :这两个寄存器特别用来保存乘法、除法、乘法累加的结果。

内存

除了寄存器以外,内存地址也可能作为MIPS指令的操作数,内存中每个字节有一个编号,因此连续的两个word的地址编号相差4。

MIPS架构中的地址为32位,也就是说地址编号从0 到 4,294,967,295,每个数字代表内存中的一个byte。

整数

32bits表示整数范围:0 到 +4,294,967,295(无符号数),或–2,147,483,648 到 +2,147,483,647(有符号数)。

位扩展

两种可能造成位扩展的指令

  • addi: extend immediate value

  • lb, lh: extend loaded byte/halfword

对于无符号数直接高位补0,对于有符号数高位补符号位。

指令结构

image-20211224212228635

image-20211224212335950

MIPS寻址方式:

(1)寄存器寻址:

3a20af83667b60fab80c86875f095536.png

(2)立即数寻址:

a70394035bca7f3344ff8ebbfd5a285a.png

(3)基址偏移量寻址

通用寄存器作为基址,操作数在存储器中

(4)PC相对寻址

(5)无条件跳转寻址

寻址总结:

c3de6a7d8bba2073c8d22c46386e2768.png

5285d4616a7576d576146ae13b98869c.png

5a97da0971406baf31713e5873504b2c.png

7条MIPS指令(关于上面的寻址)

算术运算类:ADD and SUB(R型指令的代表)

add rd, rs, rt (加法)

image-20211224213057322

M[PC],PC ← PC + 4

从PC所指的内存单元中取指令。 ​ PC加4,使PC指向下一条指令。

R[rd] ← R[rs] + R[rt]

从rs、rt 所指的寄存器中取数后相加。 ​ 若结果不溢出,则将结果送rd所指的寄存器中;若结果溢出,则不送结果,转到“溢出处理程序”执行。

sub rd, rs, rt (减法)

image-20211224213257153

M[PC],PC ← PC + 4

从PC所指的内存单元中取指令。 ​ PC加4,使PC指向下一条指令。

R[rd] ← R[rs] - R[rt]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值