【计算机组成原理】指令系统

🎄欢迎来到@边境矢梦°的csdn博文🎄
🎄本文主要梳理计算机组成原理中 指令系统的知识点和值得注意的地方 🎄
🌈我是边境矢梦°,一个正在为秋招和算法竞赛做准备的学生🌈
🎆喜欢的朋友可以关注一下🫰🫰🫰,下次更新不迷路🎆

目录

🍁指令系统的概念及指令格式

🌳寻址方式及指令寻址方式

🌻操作数寻址方式

🌸指令格式设计

🏵️MIPS指令概述

🪴MIPS指令详解


🍁指令系统的概念及指令格式

  • 指令概念
  1. 指令
    1. 计算机能直接识别、执行的操作命令(机器指令);
    2. 冯诺依曼结构计算机“程序控制”原理实现的载体.
  2. 指令系统(指令集)
    1. 一台计算机中所有机器指令的集合
    2. 系列机:同一公司不同时期生产,基本系统结构和指令系统相同的计算机。如IBM,PDP-11,VAX-11,Intel-x86
    3. 兼容机:不同公司生产,基本系统结构和指令系统相同的计算机如IBM兼容机
  3. 指令字长
    1. 指令中包含的二进制位数
    2. 与机器字长相比: 单字长、双字长、半字长等长度指令
    3. 多字长指令
      1. 解决寻址较大存储空间的问题
      2. 取指多次访内,影响速度,占用空间大
    4. 等长指令 : 指令字长度固定 (简化)
    5. 变长指令 : 指令字长度根据需要可变 (复杂)
  • 指令的分类
    • 根据计算机层次结构分类
    • 根据指令中地址码字段的个数分类
    • 根据指令中操作数的物理位置分类
    • 根据指令的功能分类
  • 指令格式
    • 用二进制代码表示指令的结构形式
  • 二说指令系统

 

🌳寻址方式及指令寻址方式

  1.  指令的顺序寻址
    1. 程序的指令序列在主存顺序存放。执行时从第一条指令开始(!),逐条取出并逐条执行,这种程序的顺序执行过程,称为顺序寻址方式 .
    2. CPU中设置程序计数器(PC)对指的顺序号进行计数。PC开始时存放程序的首地址,每执行一条指令,PC 加”1”,指出下条指令的地址直到程序结束。
  2. 指令的跳跃寻址

🌻操作数寻址方式

  1. 立即数寻址
  2. 寄存器寻址
  3. 直接寻址
  4. 间接寻址
  5. 寄存器间接寻址
  6. 相对寻址
  7. 基址寻址
  8. 变址寻址
  9. 总结

🌸指令格式设计

  1. 指令格式设计的主要内容
  2. 举例

🏵️MIPS指令概述

MIPS指令是一种精简指令集计算机(RISC)指令集,属于80年代初期由斯坦福大学Hennessy教授领导的研究小组研制成功的。MIPS指令集有多个版本,如MIPS I、MIPS II、MIPS III、MIPS IV、MIPS V、MIPS32和MIPS64。

MIPS指令集有以下特点:

  1. 简单的Load/Store结构:MIPS指令集采用简单的Load/Store结构,即指令主要涉及加载数据到寄存器(Load)和从寄存器中存储数据(Store)。这种结构简化了指令集的设计,并使得编译器更容易生成高效的代码。
  2. 易于流水线CPU设计:MIPS指令集的另一个特点是易于流水线CPU设计。流水线设计是一种提高CPU性能的技术,它将指令执行过程划分为多个阶段,每个阶段由不同的硬件单元处理。这种设计可以使得CPU在执行指令时具有更高的吞吐量和更快的执行速度。
  3. 易于编译器开发:MIPS指令集的设计使得编译器更容易生成高效的代码。由于MIPS指令集结构简单,编译器可以更轻松地分析代码并生成相应的指令序列。这有助于提高编译器的性能和生成代码的质量。
  4. MIPS指令的寻址方式非常简单:MIPS指令的寻址方式相对简单,每条指令的操作也非常简单。这使得指令集更易于理解和实现,同时也有助于提高CPU的执行效率。
  5. MIPS指令集广泛应用于嵌入式系统:在早期,MIPS指令集主要应用于嵌入式系统,如Windows CE的设备、路由器、家用网关和视频游戏机等。现在,MIPS指令集已经在PC机、服务器中得到广泛应用。

🪴MIPS指令详解

MIPS指令集包括R型、I型和J型指令,这些指令在计算机程序中有着不同的用途和功能。以下是对这些指令的详细解释:

  1. 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中。
  1. 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的值是否相等,如果相等则跳转到标签指定的位置。
  1. J型指令(转移型指令):
    J型指令是指向转移的指令。这些指令通常用于控制程序的执行流程,包括跳转、分支和子程序调用等操作。J型指令通常包含一个目标地址,程序将直接跳转到该地址执行相应的指令。

J型指令的格式通常为:opcode rs rd。其中,opcode是操作码,rs是源寄存器(如果有),rd是目标地址寄存器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/187731.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows+WSL开发环境下微服务注册(Consul)指定IP

Win11下安装一个WSL2,做开发环境,简直是爽到不要不要的,相当于既有Windows下的完善生态,又有linux的便利。特别是,在linux下运行的服务端口号,完全和windows是相通的,直接在windows下浏览访问&a…

vue 提交表单重复点击,重复提交防抖问题

问题:用户点击保存时,可能会多次点击。导致生成重复数据。 目标:多次点击时,1s内只允许提交一次数据。 解决方案: 1.在utils文件夹创建文件preventReClick.js export default {install (Vue) {// 防止按钮重复点击V…

10个顶级Linux开源反向代理服务器 - 解析与导航

反向代理服务器是一种部署在客户端和后端/源服务器之间的代理服务器,例如 NGINX、Apache 等 HTTP 服务器或用 Nodejs、Python、Java、Ruby 编写的应用程序服务器、PHP 和许多其他编程语言。 它是一个网关或中间服务器,它接受客户端请求,将其传…

Mybatis 特殊符号(大于,小于,不等于)如何添加到SQL语句中

在使用mybatis书写sql语句时&#xff0c;很多时候会需要用到大于(>,>)、小于(<,<)、不等于(<> ,!) 等特殊符号&#xff0c;由于mybatis使用xml文件格式&#xff0c;直接在SQL语句里添加 “<”会出错&#xff0c;因此就需要对相 关特殊符号进行转义或者使…

2023.11.27 使用anoconda搭建tensorflow环境

2023.11.27 使用anoconda搭建tensorflow环境 提供一个简便安装tensorflow的方法 1. 首先安装anoconda&#xff0c;安装过程略&#xff0c;注意安装的时候勾选安装anoconda prompt 2. 进入anoconda prompt 3. 建立python版本 conda create -n tensorflow1 python3.84. 激活t…

Python 中的单下划线和双下划线

哈喽大家好&#xff0c;我是咸鱼 当我们在学习 Python 的时候&#xff0c;可能会经常遇到单下划线 _ 和双下划线 __ 这两种命名方式 单下划线 _ 和双下划线 __ 不仅仅是只是一种简单的命名习惯&#xff0c;它们在 Python 中有着特殊的含义&#xff0c;对于代码的可读性和功能…

勒索解密后oracle无法启动故障处理----惜分飞

客户linux平台被勒索病毒加密,其中有oracle数据库.客户联系黑客进行解密【勒索解密oracle失败】,但是数据库无法正常启动,dbv检查数据库文件报错 [oraclehisdb ~]$ dbv filesystem01.dbf DBVERIFY: Release 11.2.0.1.0 - Production on 星期一 11月 27 21:49:17 2023 Copyrig…

如何在服务器上运行python文件

目录 前置准备 详细步骤 一&#xff0c;在服务器安装Anaconda 下载安装包 上传文件到服务器 安装环境 二&#xff0c;创建虚拟环境 创建环境 三&#xff0c;测试执行python文件 执行python文件 查看进程状态 总结 前置准备 如何在个人服务器上运行python文件&#x…

Mysql索引案例分析

这篇文章写个案例&#xff0c;测试一下MySQL索引机制 测试表结构 CREATE TABLE t_qrcode_op (id int(11) NOT NULL AUTO_INCREMENT COMMENT 主键,op_mobile varchar(16) NOT NULL,pr_code char(10) NOT NULL,PRIMARY KEY (id),UNIQUE KEY om_pc (op_mobile,pr_code) USING BTR…

会员管理系统的意义何在?

在当今的商业环境中&#xff0c;会员管理系统已经成为企业运营的重要组成部分。会员管理系统的意义在于不仅能够帮助企业提高效率&#xff0c;提升用户体验&#xff0c;进行数据分析&#xff0c;营销推广&#xff0c;还能够帮助企业增加收入。下面&#xff0c;我们将详细探讨会…

【.NET Core】语言集成查询(LINQ)详解

【.NET Core】语言集成查询&#xff08;LINQ&#xff09;详解 文章目录 【.NET Core】语言集成查询&#xff08;LINQ&#xff09;详解一、概述二、查询表达式三、LINQ查询操作中的类型关系3.1 不转换数据源的查询3.2 转换数据源的查询3.3 转换数据源返回复杂类型查询3.4 让编译…

微调Fine tune

网络架构 一个神经网络一般可以分为两块 特征抽取将原始像素变成容易线性分割的特征线性分类器来做分类 微调&#xff1a;使用之前已经训练好的特征抽取模块来直接使用到现有模型上&#xff0c;而对于线性分类器由于标号可能发生改变而不能直接使用 训练 是一个目标数据集上…

道可云元宇宙每日资讯|智慧旅游发展大会暨智慧旅游示范展示活动在南京举办

道可云元宇宙每日简报&#xff08;2023年11月28日&#xff09;讯&#xff0c;今日元宇宙新鲜事有&#xff1a; 智慧旅游发展大会暨智慧旅游示范展示活动在南京举办 2023年11月23日至25日&#xff0c;由文化和旅游部资源开发司、江苏省文化和旅游厅共同主办的“智慧旅游发展大会…

Linux驱动开发——网络设备驱动(实战篇)

目录 四、 网络设备驱动实例 五、DM9000 网络设备驱动代码分析 六、NAPI 七、习题 书接上回&#xff1a; Linux驱动开发——网络设备驱动&#xff08;理论篇&#xff09;-CSDN博客 &#xff08;没看过上面博客的同学&#xff0c;skb是linux对于网络套接字缓冲区的一个虚拟…

Leetcode 136. 只出现一次的数字

class Solution {//任何数与0异或结果都是原来的数//任何数和自身异或结果都是0//异或满足交换律和结合律//a ^ b ^ a (a ^ a) ^ b 0 ^ b bpublic int singleNumber(int[] nums) {int res nums[0];for(int i 1; i < nums.length; i){res ^ nums[i];}return res;} }

OpenCvSharp从入门到实践-(04)色彩空间

目录 1、GRAY色彩空间 2、从BGR色彩空间转换到GRAY色彩空间 2.1色彩空间转换码 2.2实例 BGR色彩空间转换到GRAY色彩空间 3、HSV色彩空间 4、从BGR色彩空间转换到HSV色彩空间 4.1色彩空间转换码 4.2实例 BGR色彩空间转换到HSV色彩空间 1、GRAY色彩空间 GRAY色彩空间通常…

26、Spring是如何解决Bean的循环依赖?

Spring是如何解决Bean的循环依赖&#xff1f; 采用三级缓存解决的 就是三个Map &#xff1b; 关键&#xff1a; 一定要有一个缓存保存它的早期对象作为死循环的出口 一级缓存&#xff1a;存储完整的Bean二级缓存&#xff1a; 避免多重循环依赖的情况 重复创建动态代理。三级缓…

Spring简单的存储和读取

前言 前面讲了spring的创建&#xff0c;现在说说关于Bean和五大类注解 一、Bean是什么&#xff1f; 在 Java 语⾔中对象也叫做 Bean&#xff0c;所以后⾯咱们再遇到对象就以 Bean 著称。这篇文章还是以spring创建为主。 二、存储对象 2.1 俩种存储方式 需要在 spring-conf…

FlinkSql-Temporal Joins-Lookup Join

说明 在 Flink SQL 中&#xff0c;Temporal Joins 是一种常见的数据关联操作&#xff0c;特别适用于处理包含时间维度的数据。Lookup Join 是 Temporal Joins 的一种类型&#xff0c;它允许将流数据与维表数据进行关联。使用场景如下&#xff1a; 实时维度关联&#xff1a; 当…

Python---文件备份案例

需求&#xff1a;用户输入当前目录下任意文件名&#xff0c;完成对该文件的备份功能(备份文件名为xx[备份]后缀&#xff0c;例如&#xff1a;test[备份].txt)。 思考&#xff1a; ① 接收用户输入的文件名 ② 规划备份文件名 ③ 备份文件写入数据 代码 # 1、接收用户输入的…