4.1指令系统-指令格式

现代计算机的结构
image.png
计算机的工作过程
image.png

指令的定义

指令(又称机器指令):
是指示计算机执行某种操作的命令,是计算机运行的最小功能单位。
一台计算机的所有指令的集合构成改机指令系统,也称为指令集。
注意:一台计算机只能执行自己指令系统中的指令,不能执行其他系统的指令。
x86架构、ARM架构

指令格式

一条指令是机器语言的一个语句,它是一组有意义的二进制代码
一条指令通常要包括操作码字段和地址字段两部分:
image.png一条指令可能包含0个、1个、2个、3个、4个地址码…
根据地址码数目不同,可以将指令分为零地址指令、一地址指令、二地址指令…
零地址指令 OP

  1. 不需要操作数,如空操作、停机、关中断等指令
  2. 堆栈计算机,两个操作数隐含存放在栈顶和次栈顶,计算结果压回栈顶

一地址指令 OP A1

  1. 只需要单操作数,如加1、减1、取反、求补等
    指令含义:OP(A1)->A1, 完成一条指令需要3次访存:取指->读A1->写A1
  2. 需要两个操作数,但其中一个操作数隐含在某个寄存器(如隐含在ACC)
    指令含义:(ACC)OP(A1)->ACC 完成一条指令需要2次访存:取指->读A1

注意:A1指某个主存地址,(A1)表示A1所指向的地址中的内容
二、三地址指令
二地址指令 OP A1(目的操作数) A2(源操作数)
常用于需要两个操作数的算术运算、逻辑运算相关指令
指令含义:(A1)OP(A2)->A1
完成一条指令需要访存4次,取指->读A1->读A2->写A1
三地址指令 OP A1 A2 A3(结果)
常用与需要两个操作数的算术运算、逻辑运算相关指令
指令含义:(A1)OP(A2)->A3
完成一条指令需要访存4次,取指->读A1->读A2->写A3
四地址指令 OP A1 A2 A3(结果) A4(下址)
指令含义:(A1)OP(A2)->A3,A4=下一条将要执行指令的地址
完成一条指令需要访存4次,取指->读A1->读A2->写A3
正常情况下:取指令之后PC+1,指向下一条指令
四地址指令:执行指令后,将PC的值修改位A4所指地址

指令-按指令长度分类

指令字长:一条指令的总长度(可能会变)
机器字长:CPU进行一次整数运算所能处理的二进制数据的位数(通常和ALU直接相关)
存储字长:一个存储单元中的二进制代码位数(通常和MDR位数相同)
半字长指令、单字长指令、双字长指令 --指令长度是机器字长的多少倍
指令字长会影响取指令所需时间。如:机器字长=存储字长=16bit,则取一条双字长指令需要两次访存
字长指令字结构:指令系统中所有指令的长度都相等
变长指令字结构:指令系统中各种指令的长度不等

指令-按操作码长度分类

定长操作码:指令系统中所有指令的操作码长度都相同
n位->2的n次方条指令
控制器的译码电路设计简单,但是灵活性较低

可变长操作码:指令系统中各指令的操作码长度可变
控制器的译码电路设计复杂,但是灵活性较高

定长指令字结构+可变长操作码 -> 扩展操作码指令格式

指令—按操作类型分类

  1. 数据传送 数据传送类 进行主存与CPU之间的数据传送
    源 目的
    LOAD 作用:把存储器中的数据放到寄存器中
    STORE 作用:把寄存器中的数据放到存储器中
  2. 算术逻辑操作 运算类
    算术:加、减、乘、除、增 1、减 1、求补、浮点运算、十进制运算
    逻辑:与、或、非、异或、位操作、位测试、位清除、位求反
  3. 移位操作 运算类
    算术移位、逻辑移位、循环移位(带进位和不带进位)
  4. 转移操作 程序控制类:改变程序执行的顺序
    无条件转移 JMP
    条件转移 JZ:结果为0;JO:结果溢出;JC:结果有进位
    调用和返回 CALL和RETURN
    陷阱(Trap)与陷阱指令
  5. 输入输出操作 输入输出类(I/O):进行CPU和I/O设备之间的数据传送
    CPU寄存器与IO端口之间的数据传送(端口即IO接口中的寄存器)

扩展操作码的指令格式

扩展操作码
image.png
在设计扩展操作码指令格式时,必须注意以下两点:
1)不允许短码是长码的前缀,即短操作码不能与长操作码的前面部分的代码相同。
2)各指令的操作码一定不能重复。
通常情况下,对使用频率较高的指令,分配较短的操作码;对使用频率较低的指令,分配较长的操作码,从而尽可能减少指令译码和分析的时间。
image.png
设地址长度为n,上一层留出m种状态,下一层可扩展出m×2的n次方种状态
image.png
指令操作码
操作码指出指令中该指令应该执行什么性质的操作和具有何种功能。
操作码是识别指令、了解指令功能与区分操作数地址内容的组成和使用方法等的关键信息。例如,指出是算术加运算,还是减运算;是程序转移,还是返回操作。
操作码分类:
定长操作码:在指令字的最高位部分分配固定的若干位(定长)表示操作码。

  • 一般n位操作码字段的指令系统最大能够表示2的n次方条指令
  • 优:定长操作码对于简化计算机硬件设计,提高指令译码和识别速度很有利
  • 缺:指令数量增加时会占用更多固定位,留给表示操作数地址的位数受限

扩展操作码(不定长操作码):全部指令的操作码字段的位数不固定,且分散地放在指令字的不同位置上。

  • 最常见的变长操作码方法是扩展操作码,使操作码的长度随地址码的减少而增加,不同地址数的指令可以具有不同长度的操作码,从而在满足需要的前提下,有效地缩短指令字长。
  • 优:在指令字长有限的前提下仍保持比较丰富的指令种类;
  • 缺:增加了指令译码和分析的难度,使控制器的设计复杂化。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

拼多多百亿补贴商品详情API接口系列

拼多多API接口是拼多多网提供的一种应用程序接口,允许开发者通过程序访问拼多多网站的数据和功能。通过拼多多API接口,开发者可以开发各种应用程序,如店铺管理工具、数据分析工具、购物比价工具等。在本章中,我们将介绍拼多多API接…

Jquery 通过class名称属性,匹配元素

UI自动化过程中,常常需要判断某个元素是否满足条件,再走不通的脚本逻辑;、本文介绍如何通过jquery判断菜单是否展开,来决定是否执行菜单展开脚本;Jquery通过class名称属性,匹配元素 我们先分析,…

HTML5学习系列之项目实战1

HTML5学习系列之项目实战1 前言代码记录问题总结 前言 学习记录 代码 <div id"player"><audio id"musicbox"></audio><div id"controls" class"clearfix controls"><div id"play" class"…

Android 当中的 Fragment 协作解耦方式

Android 当中的 Fragment 协作解耦方式 文章目录 Android 当中的 Fragment 协作解耦方式第一章 前言介绍第01节 遇到的问题第02节 绘图说明 第二章 核心代码第01节 代理人接口第02节 中间人 Activity第03节 开发者A第04节 开发者B第05节 测试类 第一章 前言介绍 第01节 遇到的…

Ubuntu22.04 Apache2安装SSL证书 https

一、免费证书申请 https://help.aliyun.com/zh/ssl-certificate/user-guide/overview-of-free-certificates 得到 三、配置 执行以下命令&#xff0c;打开default-ssl.conf文件。 vim /etc/apache2/sites-available/default-ssl.conf 在default-ssl.conf配置文件中&#xff…

List is a raw type. References to generic type List<E> should be parameterized

List is a raw type. References to generic type List<E> should be parameterized 都是代码习惯问题懒

大型且复杂项目的资源管理怎么做?

职场中&#xff0c;我劝你做个“显眼包”&#xff01;作为天天背锅、踩坑、救火的项目经理&#xff0c;积极响应、随时反馈、成果汇报这些一样都不落下&#xff0c;项目才能顺利开展。这不&#xff0c;项目经理小李就是由于自己过于低调且内敛的性格&#xff0c;差点把项目都做…

影像仪全景导航,快速定位产品特征!

**在工业制造领域中&#xff0c;影像仪全景导航可以提供全景影像&#xff0c;将整个区域的图像精准地捕捉下来&#xff0c;并通过软件算法实现高效处理&#xff0c;以呈现出更加清晰和详细的视图。**这一技术不仅可以提高定位精度&#xff0c;同时还能大幅度提升定位效率。与自…

Pytorch torch.exp()的使用举例

代码实验展示: Microsoft Windows [版本 10.0.18363.1256] (c) 2019 Microsoft Corporation。保留所有权利。C:\Users\chenxuqi>conda activate ssd4pytorch1_2_0(ssd4pytorch1_2_0) C:\Users\chenxuqi>python Python 3.7.7 (default, May 6 2020, 11:45:54) [MSC v.191…

轻量封装WebGPU渲染系统示例<34>-数据驱动之Json构建场景

场景和数据之间的互通&#xff1a; 场景数据化或者数据化场景&#xff0c;是当前的主流场景数据构成方式。方便传输方便交换甚至是交互。 内置数据互通机制更有利于用户在各种应用场合下实现具体的3D相关的应用需求。用户只需要关心标准的或者约定好的数据定义及操作方式就能方…

GPS信号的数字接收处理matlab仿真,包括频率点搜索,捕获跟踪,相关峰检测等步骤

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1. 频率点搜索 4.2. 捕获跟踪 4.3. 相关峰检测 5.算法完整程序工程 1.算法运行效果图预览 低信噪比下仿真结果如下&#xff1a; 2.算法运行软件版本 matlab2022a 3.部分核心程序 ...…

直接插入排序

一.介绍. 其基本思想为数据元素被已经放入一个已经排好的有序数组中&#xff0c;现插入一个元素进入该数组&#xff0c;按顺序&#xff08;即大小关系&#xff09;放进适当位置&#xff0c;并且其后面的元素都向后移动移位。 如图&#xff1a; 对于上述问题&#xff1a; 代码…

【AI视野·今日Sound 声学论文速览 第三十六期】Mon, 30 Oct 2023

AI视野今日CS.Sound 声学论文速览 Mon, 30 Oct 2023 Totally 7 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Sound Papers Style Description based Text-to-Speech with Conditional Prosodic Layer Normalization based Diffusion GAN Authors Neeraj Kumar, A…

湖科大计网:网络层

一、网络层概述 一、基本概念 网络层的主要任务是实现网络互连&#xff0c;进而实现数据包在各网络之间传输。 若只有单个网络&#xff0c;只需要物理层和数据链路层即可。 不同的异构网络需要路由器将其互连&#xff0c;路由器的每一个接口代表一个不同的网络&#xff0c;也区…

Windows安装nvm【node.js版本管理工具】

目录 下载安装包 安装 配置 配置node的国内镜像源 配置npm的国内镜像源 常用命令 查看可安装的node版本 安装指定的版本 查看已有的node版本列表 切换版本 下载安装包 https://github.com/coreybutler/nvm-windows/releases/tag/1.1.11 安装 安装过程就不贴了&#xff0…

leetcode刷题日志-14最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 “”。 示例 1&#xff1a; 输入&#xff1a;strs [“flower”,“flow”,“flight”] 输出&#xff1a;“fl” 示例 2&#xff1a; 输入&#xff1a;strs [“dog”,“raceca…

Java进阶笔记(面向对象后, 持续更新)

常用API 游戏打包成exe 考虑的因素 要有图形化界面代码要打包起来游戏用到的图片也要打包JDK也要打包 核心步骤 把所有代码打包成一个压缩包, jar后缀的压缩包把jar包转换成exe安装包把第二部的exe, 图片, JDK整合在一起, 变成最终的exe安装包 1. Math 是一个帮助我们用…

Android Studio 写一个Java调用c++ 的demo

前提条件&#xff1a; 本地已经配置好了ndk环境,如果没有配置好&#xff0c;建议参考macos 配置ndk环境-CSDN博客 这篇链接。 新建一个Empty Project 比如我这里的Project的名字是HelloJNI&#xff0c;包名是com.example.hellojni 然后在src目录下&#xff0c;右键选择Add C …

解决Requests中使用httpbin服务器问题:自定义URL的实现与验证

问题背景 在使用Python的Requests模块进行单元测试时&#xff0c;可能会遇到无法使用本地运行的httpbin服务器进行测试的问题。这是因为测试脚本允许通过环境变量HTTPBIN_URL指定用于测试的本地httpbin实例&#xff0c;但在某些测试用例中&#xff0c;URL是硬编码为httpbin.or…

SpringCloud -Token传递之Feign

目录 方法一 RequestHeader 方法二 使用Feign的Interceptor 步骤一 实现RequestInterceptor接口 步骤二&#xff1a;配置Feign 通常微服务对于用户认证信息解析有两种方案 在 gateway 就解析用户的 token 然后路由的时候把 userId 等相关信息添加到 header 中传递下去。在…