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关键点检测等等,基本上涵盖了图像领域大部分场景了。 …...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
