4。计算机组成原理(3)指令系统
嵌入式软件开发,非科班专业必须掌握的基本计算机知识
核心知识点:数据表示和运算、存储系统、指令系统、总线系统、中央处理器、输入输出系统
指令系统(Instruction Set)是计算机体系结构的关键组成部分之一,它定义了处理器支持的操作指令集合及其执行方式。指令系统决定了计算机能够执行的任务类型和处理速度,并且影响着软件的编程难度和运行效率。
指令系统通常包括以下几个方面:
-
操作类型:指令可以实现的操作类型,如算术运算、逻辑运算、位移运算、分支跳转、数据传输等。
-
操作数类型:指令操作数的类型,如整数、浮点数、指针、字符串等。
-
寻址方式:指令如何寻址操作数的方式,如立即数寻址、直接寻址、间接寻址、基址寻址、变址寻址等。
-
数据长度:指令操作数的长度,如8位、16位、32位、64位等。
-
流水线:指令执行时是否使用流水线加速技术,以提高指令执行效率。
-
中断异常:指令系统支持的中断、异常、陷阱类型和处理方式。
-
特殊功能:指令系统还可能提供一些特殊功能,如乘法运算、除法运算、卡车向量乘积等。
不同的指令系统有不同的设计目标和特点。一些指令系统更加注重处理速度,一些则注重可编程性和通用性。例如,x86指令系统具有广泛的应用,并有着复杂的指令集和灵活的寻址方式,但不利于代码优化;而ARM指令系统则侧重于低功耗和高效能,以及支持多种操作数类型和寻址方式。
开发者需要仔细研究目标处理器的指令集,了解其设计目标、特点、限制和优化方法,以便能够有效地编写高效、稳定的程序。
一 指令格式
第一部分:操作码字段(OP),第二部分:地址码字段 (A)
首先,地址码字段类型
四地址指令

三地址指令
二地址指令
一地址指令

零地址指令
优缺点

其次,操作码字段类型
定长编码


变长编码
![]()

扩展操作码编码 (重要)
此时二地址容易被误判成三地址


注意:操作码编码的时候,短码不能是长码的前缀;扩展窗口可以留多个
二 指令寻址方式
1)指令寻址
指令寻址有顺序寻址和跳跃寻址两种方式
2)数据寻址——加入寻址特征
立即寻址

直接寻址
隐含寻址
间接寻址

寄存器寻址

寄存器间接寻址

基址寻址:Ri保存了基址寄存器的编号
基址寻址是一种常见的寻址方式,它把某个地址作为基地址(也称为基准地址或者基地址寄存器)来执行寻址操作。在指令中使用基址加上偏移量来计算最终访问的内存地址,这样可以相对于基地址来实现寻址,从而避免了直接对内存地址进行访问。基址寻址的优点主要体现在以下几个方面:
灵活性:基址寻址可以将一个地址当作基准来执行寻址操作,而不是使用固定的、硬编码的地址,可以使得程序设计更加灵活。
安全性:基址寻址可以避免直接访问内存地址,使得代码更加安全。因为如果程序直接访问内存地址,那么内存地址很容易被黑客利用,造成系统漏洞。
便捷性:通过基址寻址,可以实现数组、矩阵等复杂数据结构的处理,简化程序设计,并且在处理多维数组、结构体等数据类型时,不需要频繁的手动计算偏移量。
维护性:基址寻址使代码可读性更高,代码具有自解释性,提高了代码的可维护性。因为通过基址寻址,直接可以理解程序员所写的指令是干什么的。
总的来说,基址寻址是一种灵活、安全、便捷、易维护的寻址方式,尤其适合用于处理复杂数据结构和多维数组等情况。
变址寻址
变址寻址也是一种常见的寻址方式,它将一个基地址与一个偏移量相加,来计算最终访问的内存地址。变址寻址主要适用于对数组进行访问、循环结构等情况,其优点主要体现在以下几个方面:
灵活性:变址寻址可以根据程序需要,动态地计算基地址和偏移量,使得程序设计更加灵活。
维护性:变址寻址可以减少代码重复,简化程序设计,提高代码的可读性和可维护性。通过使用循环结构和数组,可以用较少的代码实现复杂的操作。
效率高:变址寻址采用了指针或者数组方式,节约了CPU运算时间和内存空间,并且可以直接访问数据,速度较快。
便捷性:变址寻址可以方便地处理多维数组,可以使用一个算式表示多维数组中的元素地址,避免了繁琐的手动计算。
总的来说,变址寻址是一种灵活、高效、便捷、易维护的寻址方式,特别适合用于对数组进行访问和循环结构等场景下的操作。
相对寻址(变成可以浮动的程序)
相对寻址是一种相对于当前指令地址计算的寻址方式,通过在指令中使用一个偏移量来计算最终访问的内存地址。相对寻址的优点主要体现在以下几个方面:
灵活性:相对寻址可以根据需要动态地计算地址,不依赖于固定位置或基址。这样可以实现更灵活的程序设计,提高代码的可读性和可维护性。
相对安全:相对寻址避免了直接访问内存地址,相对安全,可以提高代码的安全性。因为如果程序直接访问内存地址,那么内存地址很容易被黑客利用,造成系统漏洞。
效率高:由于相对寻址是相对于当前指令地址计算的,所以它不需要额外的寄存器或内存,可以节省一定的时间和空间。
程序设计简单:相对寻址可以使得程序设计更加简单。特别是在处理分支跳转时,相对寻址可以用较少的指令实现复杂的控制流程,从而简化程序设计。
总的来说,相对寻址是一种灵活、安全、高效、简单的寻址方式,特别适合用于分支跳转和条件控制等操作。

堆栈寻址
三 CISC(复杂指令集)&RISC(精简指令集)
CISC(复杂指令集计算机)和RISC(精简指令集计算机)是两种计算机指令集的不同类型(两种指令设计方式)。它们有以下几个区别:
-
指令集数量:CISC的指令集比较大,其中包括很多功能强大但是比较复杂的指令;而RISC的指令集数量较少,每个指令都比较简单。
-
存储器访问:CISC采用了一些复杂指令,可以直接访问内存中的数据,尤其适合处理复杂的数据结构,但是需要大量的存储器空间;而RISC采用了载入-存储结构,只能对寄存器进行操作,对内存的访问操作都必须通过load和store等指令进行。
-
指令执行时间:CISC的每条指令需要较长的时间执行,但是可以一次完成多个操作;而RISC每条指令执行时间较短,但是每条指令只能执行一种操作。
-
编译器:由于CISC的指令集较为复杂,编译器需要更强的优化能力来生成高效的汇编代码;而RISC的指令集比较简单,编译器相对容易实现。
总的来说,CISC的优点是指令集功能强大,可以完成更复杂的操作;而RISC的优点则是指令执行速度快、编写编译器相对容易、节省存储空间等。在实际应用中,CISC和RISC都有自己的领域和优缺点,需要根据不同的需求进行选择。

时钟周期:
一个时钟脉冲所需要的时间。在计算机组成原理中又叫T周期或节拍脉冲。是CPU和其他单片机的基本时间单位。
机器周期:
通常用从内存中读取一个指令字的最短时间来规定CPU周期(机器周期),也即CPU完成一个基本操作所需的时间。
一条指令的执行

四条指令全部进入流水线的状态(译码的同时,进行取指令操作),精简指令系统更适用于流水线操作

相关文章:
4。计算机组成原理(3)指令系统
嵌入式软件开发,非科班专业必须掌握的基本计算机知识 核心知识点:数据表示和运算、存储系统、指令系统、总线系统、中央处理器、输入输出系统 指令系统(Instruction Set)是计算机体系结构的关键组成部分之一,它定义了处…...
【Elasticsearch】NLP简单应用
文章目录 NLP简介ES中的自然语言处理(NLP)NLP演示将opennlp插件放在ESplugins路径中下载NER模型配置opennlp重启ES、验证 NLP简介 NLP代表自然语言处理,是计算机科学和人工智能领域的一个分支。它涉及使用计算机来处理、分析和生成自然语言,例如英语、中…...
3. 云计算的落地实践(下)
本章讲解知识点 云计算如何落地实践ISO镜像文件创建虚拟机入门创建数据节点配置VMWare创建虚拟机三种网络模式1. 云计算的落地实践 上一章我们讲了云计算的业界实践,即:搭建IaaS后,用于创建虚拟机,在虚拟机上部署PaaS,用于管理同时部署在虚拟机上的容器,这就是业界普遍的…...
javaEE+mysql学生竞赛管理系统
本系统是基于JAVA平台开发的一套学生竞赛信息管理的系统。系统采用JSP为编程语言。数据库采用Mysql建立数据之间的转换。论文主要介绍了本课题的开发背景,所要完成的功能和开发的过程。重点的说明了系统设计的重点、设计思想、难点技术和解决方案。 本课题的目的是使…...
车辆出险记录查询API接口
车辆出险记录接口可以帮助车主、保险公司、交通管理部门等各方快速查询车辆的出险记录,了解车辆风险情况、核算保险费用等。这篇文章将探讨车辆出险记录接口的作用、应用场景、使用方式以及一些注意事项。 作用: 车辆出险记录接口主要解决了快速获取车…...
MySQL的概念,编译及安装
一.数据库的基本概念 1、数据(Data) • 描述事物的符号记录 • 包括数字,文字,图形,图像,声音,档案记录等 • 以“记录”形式按统一的格式进行存储 2、表 • 将不同的记录组织在一起 • …...
系统性能压力测试
系统性能压力测试 一、压力测试 压力测试是给软件不断加压,强制其在极限的情况下运行,观察它可以运行到何种程度,从而发现性能缺陷,是通过搭建与实际环境相似的测试环境,通过测试程序在同一时间内或某一段时间内&…...
从零开始学习Linux运维,成为IT领域翘楚(三)
文章目录 🔥Linux超级用户与伪用户🔥Linux文件基本属性🔥Linux权限字与权限操作 🔥Linux超级用户与伪用户 Linux下用户分为三类:超级用户、普通用户、伪用户 ⭐ 超级用户:用户名为root,具有一切…...
轻松搭建自己的ChatGPT聊天机器人,让AI陪你聊天!
随着人工智能技术的发展,聊天机器人已经成为了我们生活中的一部分。无论是在客服机器人上还是智能助手上,聊天机器人都能够给我们带来真正的便利和快乐。现在,你也可以轻松搭建自己的ChatGPT聊天机器人,和它天马行空地聊天&#x…...
CompletableFutrue异步处理
异步处理 一、线程的实现方式 1. 线程的实现方式 1.1 继承Thread class ThreadDemo01 extends Thread{Overridepublic void run() {System.out.println("当前线程:" Thread.currentThread().getName());} }1.2 实现Runnable接口 class ThreadDemo02 implements …...
【前端面经】JS-对象的可枚举性
JavaScript中的对象是非常重要的数据类型,它们作为编程中的基础构建块,可以被用来表示各种数据结构。对象是由属性构成的,每个属性都包含一个名字和一个值。属性值可以是基本类型或其他对象。在JavaScript中,对象属性有许多特性&a…...
沁恒 CH32V208(三): CH32V208 Ubuntu22.04 Makefile VSCode环境配置
目录 沁恒 CH32V208(一): CH32V208WBU6 评估板上手报告和Win10环境配置沁恒 CH32V208(二): CH32V208的储存结构, 启动模式和时钟沁恒 CH32V208(三): CH32V208 Ubuntu22.04 Makefile VSCode环境配置 硬件部分 CH32V208WBU6 评估板WCH-LinkE 或 WCH-Link 硬件环境与Windows下…...
日撸 Java 三百行day38
文章目录 说明day381.Dijkstra 算法思路分析2.Prim 算法思路分析3.对比4.代码 说明 闵老师的文章链接: 日撸 Java 三百行(总述)_minfanphd的博客-CSDN博客 自己也把手敲的代码放在了github上维护:https://github.com/fulisha-ok/…...
玩转肺癌目标检测数据集Lung-PET-CT-Dx ——④转换成PASCAL VOC格式数据集
文章目录 关于PASCAL VOC数据集目录结构 ①创建VOC数据集的几个相关目录XML文件的形式 ②读取dcm文件与xml文件的配对关系③创建VOC格式数据集④创建训练、验证集 本文所用代码见文末Github链接。 关于PASCAL VOC数据集 pascal voc数据集是关于计算机视觉,业内广泛…...
两种使用 JavaScript 实现网页高亮关键字的方法
随着各种类型的信息源变得越来越多,我们常常需要通过搜索引擎来找到自己需要的信息。在搜索结果中,通常会高亮显示与我们搜索的关键词相关的内容,这样我们就能更快地找到自己需要的信息。 在本文中,我们将探讨如何使用 JavaScrip…...
【SpringBoot】SpringBoot集成ElasticSearch
文章目录 第一步,导入jar包,注意这里的jar包版本可能和你导入的不一致,所以需要修改第二步,编写配置类第三步,填写yml第四步,编写util类第五步,编写controller类第六步,测试即可 第一…...
从 Elasticsearch 到 Apache Doris,10 倍性价比的新一代日志存储分析平台
作者介绍:肖康,SelectDB 技术副总裁 导语 日志数据的处理与分析是最典型的大数据分析场景之一,过去业内以 Elasticsearch 和 Grafana Loki 为代表的两类架构难以同时兼顾高吞吐实时写入、低成本海量存储、实时文本检索的需求。Apache Doris…...
探讨Redis缓存问题及解决方案:缓存穿透、缓存击穿、缓存雪崩与缓存预热(如何解决Redis缓存中的常见问题并提高应用性能)
Redis是一种非常流行的开源缓存系统,用于缓存数据以提高应用程序性能。但是,如果我们不注意一些缓存问题,Redis也可能会导致一些性能问题。在本文中,我们将探讨Redis中的一些常见缓存问题,并提供解决方案。 一、缓存穿…...
【Python】怎么在pip下载的时候设置镜像?(常见的清华镜像、阿里云镜像以及中科大镜像)
一、清华镜像 在使用 pip 命令下载 Python 包时,可以通过设置 pip 的镜像源为清华镜像来加快下载速度。 以下是如何设置清华镜像源的步骤: 打开终端或命令行窗口执行以下命令添加清华镜像源: pip config set global.index-url https://py…...
【AI面试】目标检测中one-stage、two-stage算法的内容和优缺点对比汇总
在深度学习领域中,图像分类,目标检测和目标分割是三个相对来说较为基础的任务了。再加上图像生成(GAN,VAE,扩散模型),keypoints关键点检测等等,基本上涵盖了图像领域大部分场景了。 …...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...
【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道
文/法律实务观察组 在债务重组领域,专业机构的核心价值不仅在于减轻债务数字,更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明,合法债务优化需同步实现三重平衡: 法律刚性(债…...
