### MIPS指令集速查知识点详解 #### 概述 MIPS32指令集是MIPS架构的一个重要组成部分,被广泛应用于计算机系统设计、嵌入式系统开发等领域。本篇文章将根据给定的“MIPS32 Instruction Set Quick Reference_V2.5”文件中的内容,对MIPS32指令集中的关键指令进行详细介绍。 #### 寄存器概述 - **RD**:目标寄存器 - **RS, RT**:源操作数寄存器 - **RA**:返回地址寄存器(R31) - **PC**:程序计数器 - **ACC**:64位累加器 - **LO, HI**:累加器低位(ACC31:0)和高位(ACC63:32)部分 #### 符号说明 - **±**:有符号操作数或符号扩展 - **∅**:无符号操作数或零扩展 - **::**:位字段的拼接 - **R2**:MIPS32 Release 2指令 - **DOTTED**:汇编伪指令 #### 算术运算 - **ADD RD, RS, RT**:将RS与RT相加,并将结果存储在RD中。(溢出陷阱) - **ADDI RD, RS, CONST16**:将RS与16位常量CONST16相加,并将结果存储在RD中。(溢出陷阱) - **ADDIU RD, RS, CONST16**:与ADDI类似,但使用无符号加法。 - **ADDU RD, RS, RT**:执行无符号加法。 - **CLO RD, RS**:计算RS中最高位连续的1的数量,并将结果存储在RD中。 - **CLZ RD, RS**:计算RS中最高位连续的0的数量,并将结果存储在RD中。 - **LARD, LABEL**:将LABEL的地址赋值给RD。 - **LIRD, IMM32**:将32位立即数IMM32赋值给RD。 - **LUI RD, CONST16**:将16位常量CONST16左移16位后存储到RD。 - **MOVERD, RS**:将RS的值复制到RD。 - **NEGU RD, RS**:计算-RS的值(无符号),并将结果存储在RD中。 - **SEB R2 RD, RS**:提取RS的低8位并将其符号扩展为32位,然后存储在RD中。 - **SEH R2 RD, RS**:提取RS的低16位并将其符号扩展为32位,然后存储在RD中。 - **SUB RD, RS, RT**:将RS减去RT,并将结果存储在RD中。(溢出陷阱) - **SUBU RD, RS, RT**:执行无符号减法。 #### 移位和旋转操作 - **ROTR R2 RD, RS, BITS5**:将RS右循环移位BITS5位。 - **ROTRV R2 RD, RS, RT**:使用RT的低5位作为移位量,将RS右循环移位。 - **SLL RD, RS, SHIFT5**:将RS左逻辑移位SHIFT5位。 - **SLLV RD, RS, RT**:使用RT的低5位作为移位量,将RS左逻辑移位。 - **SRA RD, RS, SHIFT5**:将RS右算术移位SHIFT5位。 - **SRAV RD, RS, RT**:使用RT的低5位作为移位量,将RS右算术移位。 - **SRL RD, RS, SHIFT5**:将RS右逻辑移位SHIFT5位。 - **SRLV RD, RS, RT**:使用RT的低5位作为移位量,将RS右逻辑移位。 #### 逻辑与位字段操作 - **AND RD, RS, RT**:计算RS与RT的按位与运算,并将结果存储在RD中。 - **ANDI RD, RS, CONST16**:计算RS与16位常量CONST16的按位与运算,并将结果存储在RD中。 - **EXTR2 RD, RS, P, S**:从RS中提取位P到S-1,并将结果存储在RD中。 - **INSR2 RD, RS, P, S**:将RS的位S-1到0写入RD的位P到S-1。 - **NOR RD, RS, RT**:计算RS与RT的按位或非运算,并将结果存储在RD中。 - **NOT RD, RS**:计算RS的按位非运算,并将结果存储在RD中。 - **OR RD, RS, RT**:计算RS与RT的按位或运算,并将结果存储在RD中。 - **ORI RD, RS, CONST16**:计算RS与16位常量CONST16的按位或运算,并将结果存储在RD中。 - **WSBH R2 RD, RS**:将RS的23:16位、31:24位、7:0位和15:8位合并成一个32位值,并存储在RD中。 - **XOR RD, RS, RT**:计算RS与RT的按位异或运算,并将结果存储在RD中。 - **XORI RD, RS, CONST16**:计算RS与16位常量CONST16的按位异或运算,并将结果存储在RD中。 #### 条件测试与条件移动操作 - **MOVN RD, RS, RT**:如果RT不等于0,则将RS的值复制到RD。 - **MOVZ RD, RS, RT**:如果RT等于0,则将RS的值复制到RD。 - **SLT RD, RS, RT**:如果RS小于RT(带符号比较),则将1存储在RD中;否则存储0。 - **SLTI RD, RS, CONST16**:如果RS小于16位常量CONST16(带符号比较),则将1存储在RD中;否则存储0。 - **SLTIU RD, RS, CONST16**:如果RS小于16位常量CONST16(无符号比较),则将1存储在RD中;否则存储0。 - **SLTU RD, RS, RT**:如果RS小于RT(无符号比较),则将1存储在RD中;否则存储0。 #### 乘法和除法操作 - **DIV RS, RT**:将RS除以RT(带符号除法),并将商存储在LO中,余数存储在HI中。 - **DIVU RS, RT**:将RS除以RT(无符号除法),并将商存储在LO中,余数存储在HI中。 - **MADD RS, RT**:将RS与RT相乘(带符号),并将结果累加到ACC中。 - **MADDU RS, RT**:将RS与RT相乘(无符号),并将结果累加到ACC中。 - **MSUB RS, RT**:将RS与RT相乘(带符号),从ACC中减去结果。 - **MSUBU RS, RT**:将RS与RT相乘(无符号),从ACC中减去结果。 以上就是根据给定的“MIPS32 Instruction Set Quick Reference_V2.5”文件中介绍的主要指令集内容。通过这些指令的了解,可以更好地掌握MIPS32架构下的程序设计和实现方法。
- 粉丝: 50
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助