4。计算机组成原理(3)指令系统

news2024/12/26 18:36:14

嵌入式软件开发,非科班专业必须掌握的基本计算机知识
核心知识点:数据表示和运算、存储系统、指令系统、总线系统、中央处理器、输入输出系统

指令系统(Instruction Set)是计算机体系结构的关键组成部分之一,它定义了处理器支持的操作指令集合及其执行方式。指令系统决定了计算机能够执行的任务类型和处理速度,并且影响着软件的编程难度和运行效率。

指令系统通常包括以下几个方面:

  1. 操作类型:指令可以实现的操作类型,如算术运算、逻辑运算、位移运算、分支跳转、数据传输等。

  2. 操作数类型:指令操作数的类型,如整数、浮点数、指针、字符串等。

  3. 寻址方式:指令如何寻址操作数的方式,如立即数寻址、直接寻址、间接寻址、基址寻址、变址寻址等。

  4. 数据长度:指令操作数的长度,如8位、16位、32位、64位等。

  5. 流水线:指令执行时是否使用流水线加速技术,以提高指令执行效率。

  6. 中断异常:指令系统支持的中断、异常、陷阱类型和处理方式。

  7. 特殊功能:指令系统还可能提供一些特殊功能,如乘法运算、除法运算、卡车向量乘积等。

不同的指令系统有不同的设计目标和特点。一些指令系统更加注重处理速度,一些则注重可编程性和通用性。例如,x86指令系统具有广泛的应用,并有着复杂的指令集和灵活的寻址方式,但不利于代码优化;而ARM指令系统则侧重于低功耗和高效能,以及支持多种操作数类型和寻址方式。

开发者需要仔细研究目标处理器的指令集,了解其设计目标、特点、限制和优化方法,以便能够有效地编写高效、稳定的程序。

一 指令格式

 第一部分:操作码字段(OP),第二部分:地址码字段 (A)

首先,地址码字段类型

四地址指令

三地址指令

 

二地址指令

 

一地址指令

零地址指令

 

优缺点

其次,操作码字段类型 

定长编码

变长编码

扩展操作码编码 (重要)

此时二地址容易被误判成三地址

注意:操作码编码的时候,短码不能是长码的前缀;扩展窗口可以留多个 

二 指令寻址方式

1)指令寻址

指令寻址有顺序寻址跳跃寻址两种方式

2)数据寻址——加入寻址特征

立即寻址

直接寻址

隐含寻址

间接寻址

寄存器寻址

寄存器间接寻址

基址寻址:Ri保存了基址寄存器的编号

基址寻址是一种常见的寻址方式,它把某个地址作为基地址(也称为基准地址或者基地址寄存器)来执行寻址操作。在指令中使用基址加上偏移量来计算最终访问的内存地址,这样可以相对于基地址来实现寻址,从而避免了直接对内存地址进行访问。基址寻址的优点主要体现在以下几个方面:

  1. 灵活性:基址寻址可以将一个地址当作基准来执行寻址操作,而不是使用固定的、硬编码的地址,可以使得程序设计更加灵活。

  2. 安全性:基址寻址可以避免直接访问内存地址,使得代码更加安全。因为如果程序直接访问内存地址,那么内存地址很容易被黑客利用,造成系统漏洞。

  3. 便捷性:通过基址寻址,可以实现数组、矩阵等复杂数据结构的处理,简化程序设计,并且在处理多维数组、结构体等数据类型时,不需要频繁的手动计算偏移量。

  4. 维护性:基址寻址使代码可读性更高,代码具有自解释性,提高了代码的可维护性。因为通过基址寻址,直接可以理解程序员所写的指令是干什么的。

总的来说,基址寻址是一种灵活、安全、便捷、易维护的寻址方式,尤其适合用于处理复杂数据结构和多维数组等情况。

变址寻址

变址寻址也是一种常见的寻址方式,它将一个基地址与一个偏移量相加,来计算最终访问的内存地址。变址寻址主要适用于对数组进行访问、循环结构等情况,其优点主要体现在以下几个方面:

  1. 灵活性:变址寻址可以根据程序需要,动态地计算基地址和偏移量,使得程序设计更加灵活。

  2. 维护性:变址寻址可以减少代码重复,简化程序设计,提高代码的可读性和可维护性。通过使用循环结构和数组,可以用较少的代码实现复杂的操作。

  3. 效率高:变址寻址采用了指针或者数组方式,节约了CPU运算时间和内存空间,并且可以直接访问数据,速度较快。

  4. 便捷性:变址寻址可以方便地处理多维数组,可以使用一个算式表示多维数组中的元素地址,避免了繁琐的手动计算。

总的来说,变址寻址是一种灵活、高效、便捷、易维护的寻址方式,特别适合用于对数组进行访问和循环结构等场景下的操作。

相对寻址(变成可以浮动的程序)

相对寻址是一种相对于当前指令地址计算的寻址方式,通过在指令中使用一个偏移量来计算最终访问的内存地址。相对寻址的优点主要体现在以下几个方面:

  1. 灵活性:相对寻址可以根据需要动态地计算地址,不依赖于固定位置或基址。这样可以实现更灵活的程序设计,提高代码的可读性和可维护性。

  2. 相对安全:相对寻址避免了直接访问内存地址,相对安全,可以提高代码的安全性。因为如果程序直接访问内存地址,那么内存地址很容易被黑客利用,造成系统漏洞。

  3. 效率高:由于相对寻址是相对于当前指令地址计算的,所以它不需要额外的寄存器或内存,可以节省一定的时间和空间。

  4. 程序设计简单:相对寻址可以使得程序设计更加简单。特别是在处理分支跳转时,相对寻址可以用较少的指令实现复杂的控制流程,从而简化程序设计。

总的来说,相对寻址是一种灵活、安全、高效、简单的寻址方式,特别适合用于分支跳转和条件控制等操作。

堆栈寻址 

 

三 CISC(复杂指令集)&RISC(精简指令集)

CISC(复杂指令集计算机)和RISC(精简指令集计算机)是两种计算机指令集的不同类型(两种指令设计方式)。它们有以下几个区别:

  1. 指令集数量:CISC的指令集比较大,其中包括很多功能强大但是比较复杂的指令;而RISC的指令集数量较少,每个指令都比较简单。

  2. 存储器访问:CISC采用了一些复杂指令,可以直接访问内存中的数据,尤其适合处理复杂的数据结构,但是需要大量的存储器空间;而RISC采用了载入-存储结构,只能对寄存器进行操作,对内存的访问操作都必须通过load和store等指令进行。

  3. 指令执行时间:CISC的每条指令需要较长的时间执行,但是可以一次完成多个操作;而RISC每条指令执行时间较短,但是每条指令只能执行一种操作。

  4. 编译器:由于CISC的指令集较为复杂,编译器需要更强的优化能力来生成高效的汇编代码;而RISC的指令集比较简单,编译器相对容易实现。

总的来说,CISC的优点是指令集功能强大,可以完成更复杂的操作;而RISC的优点则是指令执行速度快、编写编译器相对容易、节省存储空间等。在实际应用中,CISC和RISC都有自己的领域和优缺点,需要根据不同的需求进行选择。

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

一条指令的执行

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

 

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

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

相关文章

Java面试题复习(1)

目录 1.mysql使用innodb引擎,请简述mysql索引的最左前缀,如何优化order by语句 2.在JVM内存模型中,为什么要区分新生去和老年代,对于新生代为什么要区分eden区和survial区? 3.常见的远程调用有几种 4.对于外部衔接的…

ChatGPT总是答非所问?如何使用chatgpt定义角色

一、📝 定义角色:ChatGPT 的角色设定 背景信息:提供详细、准确的背景信息和前提条件,以便 ChatGPT 提供有针对性的回答和建议 任务目标:清晰地描述希望 ChatGPT 完成的任务 输出要求:告知 ChatGPT 如何完…

chatgpt应用市场

简介:利用ChatGPT的模型能力可以开发出垂直领域的应用市场。例如,可以使用ChatGPT来构建一个智能医疗助手,该助手可以回答患者关于疾病、症状、治疗方案等方面的问题。另外,也可以使用ChatGPT来构建一个智能金融助手,该助手可以回答用户关于投资、理财、贷款等方面的问题。…

MySQL的两个原则,两个优化,一个bug

背景:因为间隙锁在可重复读隔离级别下才有效,所以本篇文章接下来的描述,若没有特殊说明,默认 是可重复读隔离级别。 1.加锁规则里面,包含了两个“原则”、两个“优化”和一个“bug”。 (1). 原则1:加锁的基本单位是n…

家用洗地机有什么推荐的吗?家用洗地机分享

洗地机是解决清洁问题的智能设备。多年的市场验证已证明,它比传统清洁方法更加经济、高效和环保。相比传统方式,洗地机可以以更小的成本清洁更大的空间。同时,它的清洁效果也更好,采用先进的技术和设备,包括高压喷洒、…

第二十一章 备忘录模式

文章目录 前言一、备忘录模式基本介绍二、备忘录模式原理代码实现备忘录对象 Memento发起者 Originator管理备忘录类 CaretakerClint 测试类 三、游戏角色恢复状态实例备忘录对象游戏角色管理备忘录对象测试 Clint 四、备忘录模式的注意事项和细节 前言 一、备忘录模式基本介绍…

顺序表(二)

文章目录 前言一.什么是链表二.线性表的链表结构2.1链表的初始2.2 链表的分类2.3 单链表2.4 双链表 三.java里面的LinkedList API3.1 基础操作3.2 链表的遍历操作 四.模拟实现LinkedList的相关操作创建一个链表头插法尾插法任意位置插入,第一个数据节点为0号下标查找是否包含关…

【网络安全】记一次杀猪盘渗透实战

看起来非常假的网站,这个网站是没有 cdn 的用的是 thinkphpk 框架搭建的。 先打一波 poc 没有效果 访问一下后台直接在 url 后面加/admin。 一个开源的 cms 还没有验证码尝试用 burp 进行爆破,首先在火狐上设置代理 ip 为 127.0.0.1 代理端口为 8081。 B…

性能测试----负载测试、压力测试、并发测试

性能测试:检测一个软件的性能。 性能测试的指标: 响应时间:用户从请求到服务器响应的时间 吞吐量:单位时间内成功地传送数据的数量 并发数:在线并且在操作的用户数 负载测试:加负载,找到让系…

内网:定位域管理员

在域渗透中,获取域内的一个支点后,需要获取管理员权限。在一个域中,当计算机加入域后,会默认给域管理员组赋予本地系统管理员权限。当计算机被添加到域中,成为域的成员主机时,系统会自动将域管理员组添加到…

( “ 图 “ 之 拓扑排序 ) 207. 课程表 ——【Leetcode每日一题】

❓207. 课程表 难度:中等 你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] [ai, bi] ,表示如果要学习课…

C#_委托简述

一.委托的分类 1.delegate关键字 直接通过delegate关键字定义委托类,定义示例如下: delegate void Calculate(int x, int y, int z); 此时可将返回值类型为void、参数类型为(int, int, int)的函数委托给Calculate,示例: Calcu…

今日立夏 — 初夏已至,万物并秀。

晴日暖风生麦气, 绿阴幽草胜花时。 ——《初夏即事》王安石 告别春日和煦的风,立夏缓缓走到眼前。 古人云:“四月立夏为节者,夏,大也,至此之时物已长大,故以为名。”万物生长,人有…

Java—JDK8新特性—Lambda表达式

目录 JDK8新特性 2.Lambda表达式 2.1 什么是Lambda表达式 2.2 为什么使用Lamdba表达式 2.3 Lambda表达式基本语法 JDK8新特性 官网提供网址:JDK 8 Features 2.Lambda表达式 2.1 什么是Lambda表达式 Lamdba是一个匿名函数,可以把Lamdba表达式理解为是…

社群人脉系统源码软件开发

社群人脉系统源码软件技术主要包括以下方面: 后端开发:使用Java、Python等编程语言,采用Spring、Django等框架,实现后台管理系统和API接口开发。 前端开发:使用Vue、React等前端框架,实现用户界面开…

ebpf-linux 安全“双刃剑”

EBPF 技术简介 eBPF全称 extended BPF,Linux Kernel 3.15 中引入的全新设计, 是对既有BPF架构进行了全面扩展,一方面,支持了更多领域的应用,另一方面,在接口的设计以及易用性上,也有了较大的改进。 eBPF 是一个基于寄…

PySpark基础入门(6):Spark Shuffle

PySpark基础入门(6):Spark Shuffle - 掘金 (juejin.cn) 目录 shuffle的执行 ShuffleManager Hash Shuffle Sort Shuffle Manage Spark在DAG调度阶段会将一个Job划分为多个Stage,上游Stage做map工作,下游Stage做r…

RN系统精讲-----基础了解

原生基础 安装SDK与Tools preference > appearance > systemSetting > Android sdk 如何连接设备,以及开发中的常用的adb命令 USB连接设备 adb devices 查看连接设备 wifi网络连接设备 adb connect ip(手机自己的ip地址,可以通过…

画图以及代码分析结合的循环队列的实现

循环队列的实现 概念以及结构实现初始化判空判满入队出队从队头获得元素从队尾获得元素释放 概念以及结构 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”…

优化| 割平面算法(2): Cover Cuts, Strengthening, Separation及其拓展(理论与实战详解)

【MIP Cutting plane method】-1: Cover cuts MIP的标准形式什么是Cover CutsCover Cuts的详细案例Stronger Cover Cuts及其案例Separation for Cover Cuts用Separation生成 Cover Cuts的详细例子调用Gurobi验证Cover Cuts和Stronger Cover Cuts的作用线性松弛模型的解加入Cove…