408考研计算机之计算机组成与设计——知识点及其做题经验篇目2:指令系统
今天我们来讲一讲指令系统里面的知识点以及做题技巧
1、定义
考点1:指令定义
指令是指示计算机执行某种操作的命令,一台计算机的所有指令的集合构成该机的指令系统,也称为指令集。指令系统是指令集体系结构ISA中最核心的部分,ISA完整定义了软件与硬件之间的接口。
一条指令就是机器语言的一个语句,这是一组有意义的二进制代码。一条指令通常包括操作码字段以及地址码两部分:
操作码字段 | 地址码字段 |
其中,操作码指出指令中该指令应该执行什么样的性质的操作以及有何种功能。具体的指令操作类型有:
①数据传送:例如从CPU寄存器写数据到内存单元的STORE指令。
②算数和逻辑运算:例如加ADD、减SUB、与AND、或OR等等。
③移位操作:包括算数移位、逻辑移位、循环移位等。
④转移操作:包括无条件转移JMP、条件转移BRANCH、调用CALL等
⑤输入输出操作
而地址码给出被操作的信息(指令或数据)的地址,包括参加运算的一个或者多个操作数所在的地址、运算结果的保存地址、程序的转移地址、被调用的子程序的入口地址等等。
其实也很容易理解这些,这就好比有一个海王或者说是时间管理大师,操作码字段就好比是他要去干什么比如说逛街呀、看电影呀诸如此类,而地址码则表明是那几位“舔狗”或者“鱼儿”的编号,表明和谁去进行这个活动。有的时候进行的活动很累或者是需要很多的人,比如说爬山或者是捉迷藏,于是要和好几位鱼儿去进行活动,所以会有好几个地址。
需要特别注意:指令长度与机器字长没有固定关系,既可以等于机器字长,也可以等于机器字长,也可以大于或者等于机器字长。具体关系如下表:
指令长度与机器字长的关系 | 指令名称 |
指令长度=机器字长 | 单字长指令 |
指令长度=机器字长×0.5 | 半字长指令 |
指令长度=机器字长×2 | 双字长指令 |
在一个指令系统中,若所有指令的长度都是相等的,则称为定长指令字结构;若各种指令的长度随功能而异,则称为变长指令结构。
特别注意:主存一般是按照字节编址的,所以指令字长多为字节的整数倍。这一点它不会直接考,它会间接的考这一点,后续有一个题目就是这样,特别阴,一不小心就因为这个错了。
我们先来做一道例题感受一下这一章的难度吧:
例题:以下关于指令系统的说法中的,错误的是():
A.指令系统是一台机器硬件能执行的指令全体
B.任何程序运行前都要先转换为机器语言程序
C.指令系统是计算机软件与硬件的界面
D.单字长指令只有一个操作数
【答案】:D
【解析】:单字长指令的“单”,不是指只有一个操作数,而是说它与机器字长的关系,等于一倍的机器字长。而且我们刚刚还把指令比作“海王”,这是指望海王只钓一条鱼吗?虽然确实有海王只钓了一条鱼,但是不能代表大多数。
2、指令格式
考点2:指令的几种格式
好的,刚刚谈论到海王,那么有合格的海王,也会有不合格的海王。我们根据指令中操作数地址码的数目不同,可将指令分成下面几种格式:
①零地址指令
OP |
这个是最弱的海王,只有操作码OP,而没有显式地址,有下面两种可能:
A.真的不需要操作数,比如说空操作指令、停机指令、关中断指令
B.它是堆栈计算机,它的两个操作数隐含的从栈顶和次栈顶弹出,送到运算器进行运算,运算结果再隐含的压入栈。
②一地址指令
OP | A1 |
这种海王就是逊啦,它只有一个操作数。不过有两种情况:
A.只有目的操作数的单操作数指令,按A1地址读取操作数,进行AP操作后,结果存回原地址。例如加一,减一,取反等等。
用符号语言表示为:OP(A1)A1
B.隐含约定目的地址的双操作数指令,也就是说,这个海王不是只有一条鱼,而是另一条鱼在别的地方。按指令地址A1课读取源操作数,另一个操作数可由ACC累加器提供,运算结构也将存放在ACC中。
用符号语言表示为:(ACC)OP(A1)ACC
假设指令字长32位,而操作码占8位,那么一个地址码占24位,寻址范围为16M。
③二地址指令
这种海王就开始渣了,有两个听话的“舔狗”要受它的摆布。
OP | A1 | A2 |
对于常用的算数指令以及逻辑运算指令,往往需要两个操作数,需要分别给出目的操作数和源操作数的地址,其中目的操作数用来保存运算结果。
用符号语言表示为:(A1)OP(A1)A1
假设指令字长32位,而操作码占8位,那么一个地址码占12位,寻址范围为4K。
④三地址指令
是的,你没看错,脚踏三条船,太渣了!
OP | A1 | A2 | A3 |
其中A1、A2代表目的操作数与源操作数,而A3存放运算的结果。
用符号语言表示为:(A1)OP(A2)A3
假设指令字长32位,而操作码占8位,那么一个地址码占8位,寻址范围为256。
⑤四地址指令
我原本以为三地址已经天下无敌了,没想到有人比他还勇猛,四地址指令,厉害,您这已经不属于海王了,您这是海之霸主。
OP | A1 | A2 | A3 | A4 |
用符号语言表示:(A1)OP(A2)A3,A4=下一条将要执行指令的地址。
假设指令字长32位,而操作码占8位,那么一个地址码占6位,寻址范围为64。
上题目练练手:
例题:堆栈计算机中,有些堆栈零地址的运算类指令在指令格式中不给出操作数的地址,参加的两个操作数来自_______和__________
【答案】:堆栈的栈顶 次栈顶单元
【解析】:这个写不出来要把课本和文章好好看一下
3、定长操作码与扩展操作码指令格式
定长操作码指令在指令字的最高位部分分配固定的若干位表示操作码,一般n为操作码字段的指令系统最大能表示条指令,定长操作码可以简化计算机硬件设计。
而对于扩展操作码指令,可以在保持指令字长有限的前提下保持比较丰富的指令种类。具体怎样操作,我们马上来分析。
比如说对于指令字长为16位的指令,我们用四位表示基本操作码字段OP,剩下的地址字段均为4位,如下图:
OP(4位) | A1(4位) | A2(4位) | A3(4位) |
那么,我们可以用OP的这四位,表示所有三地址指令的数量,最广的范围为0000~1110(不是1111的原因是1111用来提示此时已经是二地址指令了),那么有条三地址指令。
当我们想表示二地址指令的时候,OP就变为1111,山中无老虎,猴子当霸王,A1它变身了,它要开始发号施令了!它进化为了指令。同理,也可以表示15条指令。同理单地址指令也是如此,也有15条指令。而零地址指令不用留出1111,故有16条。
这种扩展方式需要满足两个条件:a.不允许短码是长码的前缀,b.各个指令的操作码不能重复
顺着推理特别容易,但是反着推,告诉你零一二三地址有多少条,让你推有多少位,这个就相当麻烦了。我们看一个例题,大家自行感受一下:
例题:某计算机按字节编址,指令字长固定且只有两种指令格式,其中三地址指令有29条,二地址指令有107条,每个地址字段为6位,则指令字长至少应该是()位。
A.21
B.23
C.24
D.32
【答案】:C
【解析】:这一题有一点水平的读者会选B,真正学懂了的会选C。它只有两种指令格式,即三地址以及二地址指令,每个地址字段为6位,所以我们要把OP有多少位算出来,就能解决这一题了对吧?,所以很明显,OP有五位,且多出来了3种。那么二地址指令最多有3×
=192,大于107,满足条件。所以答案是5+6+6+6=23。选B是吧?又错了,按字节编址,说明指令字长至少是八的倍数,选大于23且满足八的倍数的,即24。
我理解大家可能暂时还看不懂答案,为什么是3×64,来让小编分析一波:首先29比32小3,对吧?然后最后这三个数分别是11101、11110、11111。所以计算机只要发现了OP是这三个数字,就会意识到,这就是一个二地址指令呀,然后在每一个没被三地址指令用到的数字下,A1都能产生64种可能性,所以说二地址指令最多有3×64种。
想要检测自己是不是真的学懂了,来做一道大题,能做出来很棒,做不出来再接再厉:
假设指令字长为16位,操作数的地址码为6位,指令有零地址、单地址、二地址3种格式。
(1)设操作码固定,若零地址指令有M种,单地址指令有N种,则二地址指令有多少种
(2)采用扩展操作码技术,则二地址指令最多有几种?
(3)采用扩展操作码技术,若二地址指令有P条,零地址指令有Q条,则一地址指令有多少种?
【答案】16-M-N;15;
【解析】(1)操作码固定,所以是定长操作码,它有16-6-6=4位,有=16种指令,三种指令合起来16种,故二地址指令有16-M-N种
(2)扩展操作码,那么二地址指令最多为种,要留出一种表示此时不是二地址指令了,而是单地址指令或者说零地址指令
(3)OP能表示16种可能性,而二地址指令有P条,所以剩余(16-P)条留给了一地址指令,一地址指最多有(16-P)×-1条,设一地址有R条指令,则零地址指令有[(16-P)×
-R]×
条。
根据Q=[(16-P)×-R]×
,得出R=
好的,本期的计算机考研408课就到此为止啦,感兴趣的小伙伴们快来关注一波,您的关注就是对小编最大的支持
相关文章:
408考研计算机之计算机组成与设计——知识点及其做题经验篇目2:指令系统
今天我们来讲一讲指令系统里面的知识点以及做题技巧 1、定义 考点1:指令定义 指令是指示计算机执行某种操作的命令,一台计算机的所有指令的集合构成该机的指令系统,也称为指令集。指令系统是指令集体系结构ISA中最核心的部分,ISA…...

Java语法中的方法引用::是个什么鬼?
1.函数式接口 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法(通俗来说就是只有一个方法要去被实现,因此我们也能通过这个去动态推断参数类型),但是可以拥有多个非抽象方法的接口。函数式接…...

【使用vue init和vue create的区别以及搭建vue项目的教程】
vue init 是vue-cli2.x的初始化方式,可以使用github上面的一些模板来初始化项目 webpack是官方推荐的标准模板名 使用方式:vue init webpack 项目名称 例如使用github上面electron-vue的模板使用方式:vue init electron-vue 项目名称教程目…...

二、HTTP协议02
文章目录一、HTTP状态管理Cookie和Session二、HTTP协议之身份认证三、HTTP长连接与短连接四、HTTP中介之代理五、HTTP中介之网关六、HTTP之内容协商七、断点续传和多线程下载一、HTTP状态管理Cookie和Session HTTP的缺陷无状态。Cookie和Session就用来弥补这个缺陷的。 Cooki…...

免费Api接口汇总(亲测可用,可写项目)
免费Api接口汇总(亲测可用)1. 聚合数据2. 用友API3. 天行数据4. Free Api5. 购物商城6. 网易云音乐API7. 疫情API8. 免费Api合集1. 聚合数据 https://www.juhe.cn/ 2. 用友API http://iwenwiki.com/wapicovid19/ 3. 天行数据 https://www.tianapi.com…...

12.并发编程
1.并发并发:逻辑流在时间时重叠构造并发程序:进程:每个逻辑控制流是一个进程,由内核调度和维护进程有独立的虚拟地址空间,想要通信,控制流必须使用某种显式的进程间通信机制(IPC)I/O多路复用:程…...

C/C++指针与数组(一)
预备知识 1、数据的存储 2、基本内建类型 1)类型的大小 C offers a flexible standard with some guaranteed minimum sizes, which it takes from C: A short integer is at least 16 bits wide.An int integer is at least as big as short.A long integer is a…...

Android使用移动智能终端补充设备标识获取OAID
官网http://www.msa-alliance.cn/col.jsp?id120首先到官网注册账号,申请下载相关sdk和授权证书2.把 oaid_sdk_x.x.x.aar 拷贝到项目的 libs 目录,并设置依赖,其中x.x.x 代表版本号3.supplierconfig.json 拷贝到项目 assets 目录下࿰…...
极目智能与锐算科技达成战略合作,4D毫米波成像雷达助力智能驾驶落地
近日,智能驾驶方案提供商武汉极目智能技术有限公司(以下简称“极目智能”)宣布与毫米波成像雷达公司锐算(上海)科技有限公司(以下简称“锐算科技”)达成战略合作,双方将合作开发基于…...

OpenCV基础(一)
1.认识图像(彩色图中每一个像素点都包含三个颜色通道RGB,数值范围为0~255,0代表黑色,255代表白色) import cv2 #opencv 读取的格式为BGRimg cv2.imread(cat.png) #读取图像 cv2.imshow(cat, img) #显示图像img&#x…...
pinia 的使用(笔记)
文章目录1. Pinia 与 Vuex 的区别2. pinia 安装与搭建3. pinia 的使用3.1 基本使用3.2 订阅状态3.3 订阅 actions1. Pinia 与 Vuex 的区别 Pinia 是 Vue 的状态管理库,相当于 Vuex 取消了 mutations,取消了 Module 模块化命名空间现在的 pinia 采用的是…...

DolphinDB 机器学习在物联网行业的应用:实时数据异常率预警
数据异常率预警在工业安全生产中是一项重要工作,对于监控生产过程的稳定性,保障生产数据的有效性,维护生产设备的可靠性具有重要意义。随着大数据技术在生产领域的深入应用,基于机器学习的智能预警已经成为各大生产企业进行生产数…...

新建vite+vue3+ts项目,以及解决过程中遇到的问题
目录 一、新建vitevue3ts项目 二、解决过程中遇到的问题 解决报错:Module ‘“xx.vue“‘ has no default export. 解决报错:Error [ERR_MODULE_NOT_FOUND]: Cannot find package ‘uuid’ imported from xxx的解决 解决报错:[plugin:vi…...
pyppeteer中文文档
目录 1.命令 2.环境变量 3.Launcher(启动器) 4.浏览器类 5.浏览器上下文类 6.页面类 7.Worker 类 8.键盘类 9.鼠标类 10.Tracing类 11.对话框类 12.控制台消息类 13.Frame 类 14.执行上下文类 15.JSHandle 类 16.元素句柄类…...

(二十四)操作系统-吸烟者问题
文章目录一、问题描述二、问题分析1.关系分析2.整理思路3.设置信号量三、实现四、总结一、问题描述 假设一个系统有三个抽烟者进程和一个供应者进程。每个抽烟者不停地卷烟并抽掉它,但是要卷起并抽掉一支烟,抽烟者需要…...

ReentranLock(可重入锁)
一、ReentranLock ReentranLock属于JUC并发工具包下的类,相当于 synchronized具备如下特点 ● 可中断 ● 可以设置超时时间 ● 可以设置为公平锁(防止线程出现饥饿的情况) ● 支持多个条件变量 与 synchronized一样,都支持可重…...
Kafka 入门 (一)
Kafka 入门(一) Apache Kafka起源于LinkedIn,后来于2011年成为开源Apache项目,然后于2012年成为First-class Apache项目。Kafka是用Scala和Java编写的。 Apache Kafka是基于发布订阅的容错消息系统。 它是快速,可扩展…...
linux内核开发入门二(内核KO模块介绍、开发流程以及注意事项)
linux内核开发入门二(内核KO模块介绍、开发流程以及注意事项) 一、什么是内核模块 内核模块:ko模块(Kernel Object Module)是Linux内核中的可加载模块,它可以动态地向内核添加功能。在运行时,可…...

设计模式(十七)----行为型模式之模板方法模式
行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。 行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为&…...
【嵌入式Linux内核驱动】01_内核模块
内核模块 宏内核&微内核 微内核就是内核中的一部分功能放到应用层 内核小,精简,可扩展性好,安全性好 相互之间通信损耗多 内核模块 Linux是宏内核操作系统的典型代表,所有内核功能都整体编译到一起,优点是效…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...

微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...

回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...