手把手教你自己动手写cpu(四)--MIPS32 指令集架构

目录

MIPS32 指令集架构的特点

MIPS32 的指令格式

基本指令集

数据传送和逻辑操作

分支和跳转

浮点运算

特殊指令

指令集的扩展

总结


 

MIPS32 指令集架构(Instruction Set Architecture, ISA)是 MIPS 架构的一种 32 位版本,它定义了一套指令集,用于描述计算机硬件如何执行基本操作。MIPS32 ISA 是一种典型的 RISC(Reduced Instruction Set Computer)架构,以其简洁的指令集和高效的执行机制著称,广泛应用于嵌入式系统、网络设备、高性能计算等领域。

MIPS32 指令集架构的特点

  1. RISC 设计原则:MIPS32 采用 RISC 设计原则,这意味着它的指令集相对简单,每条指令执行时间固定,有利于流水线处理和并行执行。

  2. 固定长度指令:所有指令都是 32 位长度,这使得指令解码和执行更为简单。

  3. 寄存器窗口:MIPS32 使用了大量的通用寄存器(通常为 32 个),并且支持寄存器窗口技术,可以提高函数调用的效率。

  4. 统一的内存模型:所有数据类型(整型、浮点型等)都通过统一的方式访问内存,简化了编程和硬件设计。

  5. 支持多种数据类型:除了基本的整数运算外,还支持浮点运算和其他复杂数据类型的操作。

MIPS32 的指令格式

MIPS32 指令通常可以分为三类:

  1. R 型指令:这类指令主要用于寄存器到寄存器的操作,如加法、逻辑运算等。

    • 格式:opcode rs rt rd shamt funct
    • 其中 opcode 是操作码,rs 和 rt 是源寄存器,rd 是目标寄存器,shamt 是移位量,funct 是功能字段。
  2. I 型指令:这类指令通常用于寄存器和立即数的操作,如加载、存储等。

    • 格式:opcode rs rt immediate
    • 其中 opcode 是操作码,rs 是源寄存器,rt 是目标寄存器,immediate 是立即数。
  3. J 型指令:这类指令主要用于条件跳转和无条件跳转。

    • 格式:opcode address
    • 其中 opcode 是操作码,address 是跳转的目标地址。

基本指令集

数据传送和逻辑操作

  • LW/SW:加载(Load Word)/ 存储(Store Word)

     
    assembly

    深色版本

    1lw $t0, 0($s0)  # 将$s0所指向的内存中的32位值加载到$t0寄存器
    2sw $t0, 0($s0)  # 将$t0寄存器的值存储到$s0所指向的内存中
  • ADD/ADDU:加法

     
    assembly

    深色版本

    1add $t0, $t1, $t2  # 将$t1和$t2寄存器的值相加,并将结果存储到$t0寄存器
  • AND/OR/XOR:逻辑运算

     
    assembly

    深色版本

    1and $t0, $t1, $t2  # 将$t1和$t2寄存器的值进行逻辑与运算,并将结果存储到$t0寄存器
    2or $t0, $t1, $t2   # 逻辑或运算
    3xor $t0, $t1, $t2  # 逻辑异或运算

分支和跳转

  • BEQ/BNE:条件分支

     
    assembly

    深色版本

    1beq $t0, $zero, label  # 如果$t0寄存器的值等于0,则跳转到"label"
    2bne $t0, $zero, label  # 如果$t0寄存器的值不等于0,则跳转到"label"
  • J/JR:跳转

     
    assembly

    深色版本

    1j label  # 无条件跳转到"label"
    2jr $ra   # 返回到$ra寄存器保存的地址

浮点运算

  • FADD/FSUB/FMUL/FDIV:浮点加法/减法/乘法/除法
     
    assembly

    深色版本

    1fadd.s $f0, $f1, $f2  # 将$f1和$f2寄存器的单精度浮点数相加,并将结果存储到$f0寄存器

特殊指令

  • NOP:空操作

     
    assembly

    深色版本

    1nop  # 不做任何操作
  • HALT:停止执行

     
    assembly

    深色版本

    1halt  # 停止执行程序

指令集的扩展

MIPS32 ISA 还支持多种扩展指令集,包括:

  • MMU:内存管理单元(Memory Management Unit),用于支持虚拟内存。
  • FPU:浮点运算单元(Floating Point Unit),用于支持浮点运算。
  • Multiprocessor Extensions:多处理器扩展,支持多核处理器的同步和通信。

总结

MIPS32 指令集架构以其简洁、高效的特点,在嵌入式系统和其他领域得到广泛应用。通过了解 MIPS32 ISA 的基本指令集和特性,可以更好地理解计算机硬件的工作原理,并为进一步学习和开发基于 MIPS32 架构的系统奠定基础。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值