🎄欢迎来到@边境矢梦°的csdn博文🎄
🎄本文主要梳理计算机组成原理中 指令系统的知识点和值得注意的地方 🎄
🌈我是边境矢梦°,一个正在为秋招和算法竞赛做准备的学生🌈
🎆喜欢的朋友可以关注一下🫰🫰🫰,下次更新不迷路🎆
目录
🍁指令系统的概念及指令格式
🌳寻址方式及指令寻址方式
🌻操作数寻址方式
🌸指令格式设计
🏵️MIPS指令概述
🪴MIPS指令详解
🍁指令系统的概念及指令格式
- 指令概念
- 指令
- 计算机能直接识别、执行的操作命令(机器指令);
- 冯诺依曼结构计算机“程序控制”原理实现的载体.
- 指令系统(指令集)
- 一台计算机中所有机器指令的集合
- 系列机:同一公司不同时期生产,基本系统结构和指令系统相同的计算机。如IBM,PDP-11,VAX-11,Intel-x86
- 兼容机:不同公司生产,基本系统结构和指令系统相同的计算机如IBM兼容机
- 指令字长
- 指令中包含的二进制位数
- 与机器字长相比: 单字长、双字长、半字长等长度指令
- 多字长指令
- 解决寻址较大存储空间的问题
- 取指多次访内,影响速度,占用空间大
- 等长指令 : 指令字长度固定 (简化)
- 变长指令 : 指令字长度根据需要可变 (复杂)
- 指令的分类
- 根据计算机层次结构分类
- 根据指令中地址码字段的个数分类
- 根据指令中操作数的物理位置分类
- 根据指令的功能分类
- 指令格式
- 用二进制代码表示指令的结构形式
- 二说指令系统
🌳寻址方式及指令寻址方式
- 指令的顺序寻址
- 程序的指令序列在主存顺序存放。执行时从第一条指令开始(!),逐条取出并逐条执行,这种程序的顺序执行过程,称为顺序寻址方式 .
- CPU中设置程序计数器(PC)对指的顺序号进行计数。PC开始时存放程序的首地址,每执行一条指令,PC 加”1”,指出下条指令的地址直到程序结束。
- 指令的跳跃寻址
🌻操作数寻址方式
- 立即数寻址
- 寄存器寻址
- 直接寻址
- 间接寻址
- 寄存器间接寻址
- 相对寻址
- 基址寻址
- 变址寻址
- 总结
🌸指令格式设计
- 指令格式设计的主要内容
- 举例
🏵️MIPS指令概述
MIPS指令是一种精简指令集计算机(RISC)指令集,属于80年代初期由斯坦福大学Hennessy教授领导的研究小组研制成功的。MIPS指令集有多个版本,如MIPS I、MIPS II、MIPS III、MIPS IV、MIPS V、MIPS32和MIPS64。
MIPS指令集有以下特点:
- 简单的Load/Store结构:MIPS指令集采用简单的Load/Store结构,即指令主要涉及加载数据到寄存器(Load)和从寄存器中存储数据(Store)。这种结构简化了指令集的设计,并使得编译器更容易生成高效的代码。
- 易于流水线CPU设计:MIPS指令集的另一个特点是易于流水线CPU设计。流水线设计是一种提高CPU性能的技术,它将指令执行过程划分为多个阶段,每个阶段由不同的硬件单元处理。这种设计可以使得CPU在执行指令时具有更高的吞吐量和更快的执行速度。
- 易于编译器开发:MIPS指令集的设计使得编译器更容易生成高效的代码。由于MIPS指令集结构简单,编译器可以更轻松地分析代码并生成相应的指令序列。这有助于提高编译器的性能和生成代码的质量。
- MIPS指令的寻址方式非常简单:MIPS指令的寻址方式相对简单,每条指令的操作也非常简单。这使得指令集更易于理解和实现,同时也有助于提高CPU的执行效率。
- MIPS指令集广泛应用于嵌入式系统:在早期,MIPS指令集主要应用于嵌入式系统,如Windows CE的设备、路由器、家用网关和视频游戏机等。现在,MIPS指令集已经在PC机、服务器中得到广泛应用。
🪴MIPS指令详解
MIPS指令集包括R型、I型和J型指令,这些指令在计算机程序中有着不同的用途和功能。以下是对这些指令的详细解释:
- R型指令(寄存器型指令):
R型指令是指操作数和保存结果均通过寄存器进行的指令。这些指令通常涉及对寄存器中的数据进行算术或逻辑操作,并将结果存储回原始寄存器或另一个寄存器中。R型指令包括加法、减法、乘法、除法等算术操作,以及与寄存器中的数据进行比较、位移等逻辑操作。R型指令的格式通常为:opcode Rs Rd shamt funct。其中,opcode是操作码,Rs是源寄存器1,Rd是目标寄存器,shamt是移位量(当涉及到移位操作时),funct是具体的操作类型。
具体R型指令包括:
- 带有3个寄存器的指令:这些指令通常涉及对两个源寄存器中的数据进行算术或逻辑操作,并将结果存储到目标寄存器中。例如,ADD R1, R2, R3将把R2和R3中的内容相加,并将结果存储到R1中。
- 带有2个寄存器的指令:这些指令通常涉及对一个源寄存器中的数据进行算术或逻辑操作,并将结果存储到另一个寄存器中。例如,SUB R1, R2, R3将把R2和R3中的内容相减,并将结果存储到R1中。
- 带有1个寄存器的指令:这些指令通常只对一个寄存器中的数据进行操作,例如,MOV R1, #10将把常量值10加载到R1中。
- I型指令(立即数型指令):
I型指令是指面向立即数的指令。立即数是指直接在指令中指定的常数值,而不是从内存或寄存器中获取的值。I型指令通常用于对常量和某些特定的寄存器进行算术或逻辑操作。I型指令的格式通常为:opcode Rs Rd imm。其中,opcode是操作码,Rs是源寄存器(如果有),Rd是目标寄存器,imm是立即数。
具体I型指令包括:
- 面向运算的I型指令:这些指令通常涉及对两个立即数进行算术或逻辑操作,并将结果存储到目标寄存器中。例如,ADD I1, I2, I3将把I2和I3的值相加,并将结果存储到I1中。
- 面向访存的I型指令:这些指令通常涉及对一个立即数和内存地址进行算术或逻辑操作,并将结果存储到目标寄存器中。例如,LW R1, I2(mem)将从内存地址为I2的值加载到R1中。
- 面向数位设置的I型指令:这些指令通常涉及对一个立即数的特定位进行设置或清除操作。例如,BSET bit, I1将把I1中特定位的值设置为1。
- 面向条件转移(分支)的I型指令:这些指令通常用于根据条件进行跳转或分支操作。例如,BEQ I1, I2, label将比较I1和I2的值是否相等,如果相等则跳转到标签指定的位置。
- J型指令(转移型指令):
J型指令是指向转移的指令。这些指令通常用于控制程序的执行流程,包括跳转、分支和子程序调用等操作。J型指令通常包含一个目标地址,程序将直接跳转到该地址执行相应的指令。J型指令的格式通常为:opcode rs rd。其中,opcode是操作码,rs是源寄存器(如果有),rd是目标地址寄存器。