MIPS指令集
### MIPS指令集详解 MIPS(Microprocessor without Interlocked Pipeline Stages)是一种精简指令集计算机(RISC)架构的标准,由MIPS Technologies Inc.设计。MIPS指令集旨在简化处理器设计并提高执行效率,其指令格式清晰,易于理解和实现。 #### MIPS-C指令集概述 MIPS-C指令集是从MIPS32指令集中精选出来的常用指令集合,能够支持大多数定点运算程序,并具备了CP0寄存器的操作以及异常处理机制,为简单的操作系统运行提供支持。该指令集总共包含55条指令,按照功能被细分为九个子类。 #### 指令详解 下面将对MIPS-C指令集中的一些基本指令进行详细介绍: ##### 加载与保存指令 - **LB** (Load Byte): 加载一个带符号的字节到寄存器中。 - **操作**: `R[rt] = {24{Mem[GPR[rs] + sign_ext(offset)][7]}, Mem[GPR[rs] + sign_ext(offset)][7:0]}` - **LBU** (Load Byte Unsigned): 加载一个无符号的字节到寄存器中。 - **操作**: `R[rt] = {24'b0, Mem[GPR[rs] + sign_ext(offset)][7:0]}` - **LH** (Load Halfword): 加载一个带符号的半字到寄存器中。 - **操作**: `R[rt] = {16{Mem[GPR[rs] + sign_ext(offset)][15]}, Mem[GPR[rs] + sign_ext(offset)][15:0]}` - **LHU** (Load Halfword Unsigned): 加载一个无符号的半字到寄存器中。 - **操作**: `R[rt] = {16'b0, Mem[GPR[rs] + sign_ext(offset)][15:0]}` - **LW** (Load Word): 加载一个字到寄存器中。 - **操作**: `R[rt] = Mem[GPR[rs] + sign_ext(offset)]` - **SB** (Store Byte): 将寄存器中的低八位保存到内存地址。 - **操作**: `Mem[GPR[rs] + sign_ext(offset)][7:0] = R[rt][7:0]` - **SH** (Store Halfword): 将寄存器中的低十六位保存到内存地址。 - **操作**: `Mem[GPR[rs] + sign_ext(offset)][15:0] = R[rt][15:0]` - **SW** (Store Word): 将整个寄存器的值保存到内存地址。 - **操作**: `Mem[GPR[rs] + sign_ext(offset)] = R[rt]` ##### 算术与逻辑指令 - **ADD** (Add): 对两个寄存器的值进行带符号加法。 - **操作**: `GPR[rd] = GPR[rs] + GPR[rt]` - **ADDU** (Add Unsigned): 对两个寄存器的值进行无符号加法。 - **操作**: `GPR[rd] = GPR[rs] + GPR[rt]` - **SUB** (Subtract): 对两个寄存器的值进行带符号减法。 - **操作**: `GPR[rd] = GPR[rs] - GPR[rt]` - **SUBU** (Subtract Unsigned): 对两个寄存器的值进行无符号减法。 - **操作**: `GPR[rd] = GPR[rs] - GPR[rt]` - **AND** (And): 对两个寄存器的值进行按位与运算。 - **操作**: `GPR[rd] = GPR[rs] AND GPR[rt]` - **OR** (Or): 对两个寄存器的值进行按位或运算。 - **操作**: `GPR[rd] = GPR[rs] OR GPR[rt]` - **XOR** (Xor): 对两个寄存器的值进行按位异或运算。 - **操作**: `GPR[rd] = GPR[rs] XOR GPR[rt]` - **NOR** (Nor): 对两个寄存器的值进行按位或非运算。 - **操作**: `GPR[rd] = ~(GPR[rs] OR GPR[rt])` ##### 移位指令 - **SLL** (Shift Left Logical): 进行逻辑左移。 - **操作**: `GPR[rd] = GPR[rt] << shamt` - **SRL** (Shift Right Logical): 进行逻辑右移。 - **操作**: `GPR[rd] = GPR[rt] >> shamt` - **SRA** (Shift Right Arithmetic): 进行算术右移。 - **操作**: `GPR[rd] = GPR[rt] >>a shamt` ##### 跳转与条件指令 - **BEQ** (Branch on Equal): 如果两个寄存器的值相等,则跳转到指定地址。 - **操作**: 如果 `GPR[rs] == GPR[rt]`,则跳转。 - **BNE** (Branch on Not Equal): 如果两个寄存器的值不相等,则跳转到指定地址。 - **操作**: 如果 `GPR[rs] != GPR[rt]`,则跳转。 - **BGTZ** (Branch on Greater Than Zero): 如果寄存器的值大于零,则跳转到指定地址。 - **操作**: 如果 `GPR[rs] > 0`,则跳转。 - **BLTZ** (Branch on Less Than Zero): 如果寄存器的值小于零,则跳转到指定地址。 - **操作**: 如果 `GPR[rs] < 0`,则跳转。 - **J** (Jump): 无条件跳转到指定地址。 - **操作**: `PC = target_address` - **JAL** (Jump and Link): 无条件跳转到指定地址,并将当前PC值保存在$ra寄存器中。 - **操作**: `GPR[ra] = PC; PC = target_address` - **JALR** (Jump and Link Register): 通过寄存器的值跳转,并将当前PC值保存在另一个寄存器中。 - **操作**: `GPR[rd] = PC; PC = GPR[rs]` ##### 寄存器间指令 - **JR** (Jump Register): 通过寄存器的值进行无条件跳转。 - **操作**: `PC = GPR[rs]` ##### 特殊指令 - **BREAK** (Break): 设置断点,通常用于调试。 - **操作**: 停止执行,进入调试模式。 - **SYSCALL** (System Call): 发起系统调用。 - **操作**: 触发特定的系统服务。 - **ERET** (Exception Return): 从异常处理中返回。 - **操作**: 恢复状态并继续执行。 #### 总结 MIPS-C指令集是基于MIPS32指令集的一个子集,它包含了足够的指令来支持大多数定点运算程序,并且能够支持简单的操作系统运行。这些指令涵盖了加载与保存数据、算术与逻辑运算、条件分支、跳转等多种操作。通过合理组合这些指令,可以构建出复杂而高效的程序。对于学习和理解计算机体系结构以及编程原理来说,MIPS-C指令集是一个非常有价值的工具。
剩余23页未读,继续阅读
- fbdog2015-11-13很详细的资料,谢谢分享
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- hustoj-重庆大学python题库答案
- annual-report-builder-年度报告
- 两相交错并联buck boost变器仿真 采用4mos结构,模型内包含开环,电压单环,电压电流双闭环三种控制方式,里面有注解每种控制模式怎么连接手动开关 输出波形好,电压纹波小 三种方式中,双环控
- Matlab遗传算法车间调度问题 源码+详细注释(方便学习) 问题描述:已知各工件的加工时间,优化目标是如何确定工件的加工顺序以及每阶段工件在机器上的分配情况,使得最大完工时间极小化
- Util-大炮打蚊子c++
- Task-113-出租车计价
- 西门子1200恒压供水程序+PID+触摸屏程序 1.此程序样 例为 一拖三恒压供水程序样例,采用S7-1200PLC和KTP1000PN触摸屏 人机执行PID控制变频器实现恒压供水. 可供学习
- xjtuer-eat-report-年度报告
- Matlab车辆配送路径规划问题 各类vrp代码 带时间窗的路径规划问题 遗传算法 蚁群算法 模拟 火算法 混合粒子群算法解决 tsp cvrp dvrp cdvrp vrptw问题 tsp:旅行
- 风储联合,双馈风电机组四机两区域 三机九节点 惯量 转子动能控制 桨距角控制 减载控制调频 结合储能调频〔目前为直流电容〕也可加入电池化学储能 风机混和储能一次二次调频时域模型〔电容+电池调频,由于
- Comsol计算手性介质 特殊本构关系构建,内置表达式的推导与修改
- 多线程qt5 c++ 工业自动化上位机源代码 Qt5之工业应用 一套完整工程,链接PLC,工业无人值守自动扫码使用,无线扫码枪SR1000的使用,使用qt5.14,用qtcreator加载工程后
- MATLAB机器人运动学正逆解、动力学建模仿真与轨迹规划,雅克比矩阵求解 多项式函数插值 抛物线插值轨迹规划
- 无感FOC电机三相控制高速吹风筒方案 FU6812L+FD2504S 电压AC220V 功率80W 最高转速20万RPM 方案优势:响应快、效率高、噪声低、成本低 控制方式:三相电机无感FOC 闭环方
- 三菱FX3U-485ADP-MB通讯程序 硬件:FX33SAPLC,FX3U-485ADP-MB通信扩展模块,三菱E700变频器,fx3u-cnv-bd 通过modbus rtu通讯方式 ,可以实
- 基于LMS的回音消除自适应滤波 代码百分百可运行