指令系统——指令格式(详解)

一、总览

在这里插入图片描述

二、指令的定义

指令(又称机器指令):
是指示计算机执行某种操作的命令,是计算机运行的最小功能单位
一台计算机的所有指令的集合构成该机的指令系统,也称为指令集
注:一台计算机只能执行自己指令系统中的指令,不能执行其他系统的指令。
在这里插入图片描述

三、指令格式

一条指令就是机器语言的一个语句,它是一组有意义的二进制代码
一条指令通常要包括操作码字段地址码字段两部分:
在这里插入图片描述
A1这个地址里面的值 与 A2这个地址里面的值 执行OP操作后,将结果存到A3这个地址中

四、指令格式-地址码

在这里插入图片描述
在这里插入图片描述
指令含义:(A1)OP(A2)——>A3,A4=下一条将要执行指令的地址
设指令字长为32位,操作码占8位,4个地址码字段各占6位
设存储字长为32位,即4B

  • Ai可直接表示2^6=64个不同的位置
  • 一条指令的执行(假设每个地址都是主存地址):
    取指令访存1次(假设指令字长=存储字长)
    取两个操作数访存2次
    存回结果访存1次
    共访存4次
    在这里插入图片描述

设指令字长及存储字长均为32位,操作码占8位:

定长指令字结构:指令长度固定 指令字长=存储字长
变长指令字结构:指令长度不等 按字节的倍数变化

定长操作码:n位——>2^n条指令
扩展操作码:操作码长度可变
在这里插入图片描述
指令含义:(A1)OP(A2)→A3,A4=下一条将要执行指令的地址
4个地址码字段各占6位,指令操作数直接寻址范围为2^6=64;完成一条指令需要访存4次在这里插入图片描述
指令含义:(A1)OP(A2)→A3
3个地址码字段各占8位,指令操作数直接寻址范围为2^8=256;完成一条指令需要访存4次
在这里插入图片描述
指令含义:(A1)OP(A2)→A1
2个地址码字段各占12位,指令操作数直接寻址范围为2^12=4K;完成一条指令需要访存4次
在这里插入图片描述
指令含义:

  1. OP(A1)→A1,如加1、减1、取反、求补等,完成一条指令需要访存3次
  2. (ACC)OP(A1)→ACC,隐含约定的目的地址为ACC完成一条指令需要访存2次,1个地址码字段占24位,指令操作数直接寻址范围为2^24=16M
    注:ACC为累加器
    在这里插入图片描述
    指令含义:
    1.不需要操作数,如空操作、停机、关中断等指令
    2.堆栈计算机,两个操作数隐含存放在栈顶和次栈顶,计算结果压回栈顶

小结:
当用一些硬件资源代替指令字中的地址码字段后

  1. 可扩大指令的寻址范围
  2. 可缩短指令字长
  3. 可减少访存次数

五、扩展操作码

在设计扩展操作码指令格式时,必须注意以下两点:
1)不允许短码是长码的前缀,即短操作码不能与长操作码的前面部分的代码相同。
2)各指令的操作码一定不能重复。
通常情况下,对使用频率较高的指令,分配较短的操作码;对使用频率较低的指令,分配较长的操作码,从而尽可能减少指令译码和分析的时间。也还有其他扩展操作码设计方法。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

六、指令操作码

操作码指出指令中该指令应该执行什么性质的操作和具有何种功能。
操作码是识别指令、了解指令功能与区分操作数地址内容的组成和使用方法等的关键信息。例如,指出是算术加运算,还是减运算;是程序转移,还是返回操作。
操作码分类:

  1. 定长操作码:在指令字的最高位部分分配固定的若干位(定长)表示操作码。
  • 一般n位操作码字段的指令系统最大能够表示2”条指令。
  • 优:定长操作码对于简化计算机硬件设计,提高指令译码和识别速度很有利;
  • 缺:指令数量增加时会占用更多固定位,留给表示操作数地址的位数受限。
  1. 扩展操作码(不定长操作码):全部指令的操作码字段的位数不固定,且分散地放在指令字的不同位置上。
  • 最常见的变长操作码方法是扩展操作码,使操作码的长度随地址码的减少而增加,不同地址数的指令可以具有不同长度的操作码,从而在满足需要的前提下,有效地缩短指令字长。
  • 优:在指令字长有限的前提下仍保持比较丰富的指令种类;
  • 缺:增加了指令译码和分析的难度,使控制器的设计复杂化。

七、操作类型

在这里插入图片描述

八、总结

在这里插入图片描述

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

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

相关文章

MySQL中Index Condition Pushdown(ICP)优化

在MySQL 5.6开始支持的一种根据索引进行查询的优化方式。之前的MySQL数据库版本不支持ICP,当进行索引查询是,首先根据索引来查找记录,然后在根据WHERE条件来过滤记录。在支持ICP后,MySQL数据库会在取出索引的同时,判断…

LeetCode 2208. 将数组和减半的最少操作次数(优先队列)

文章目录1. 题目2. 解题1. 题目 给你一个正整数数组 nums 。每一次操作中,你可以从 nums 中选择 任意 一个数并将它减小到 恰好 一半。(注意,在后续操作中你可以对减半过的数继续执行操作) 请你返回将 nums 数组和 至少 减少一半…

指令系统——数据存放、指令寻址(详解)

一、总览 二、数据存放 三、指令寻址 四、小结:

数据库和ORMS:使用Tortoise ORM与数据库通信

文章目录1. 安装环境2. 创建数据库模型3. 设置 Tortoise 引擎4. create5. 查询6. 修改、删除7. 添加关联8. 用Aerich建立数据库迁移系统learn from 《Building Data Science Applications with FastAPI》Tortoise ORM 是一种现代异步 ORM,非常适合 FastAPI项目 1. …

指令系统——数据寻址(1)(详解)

一、总览 二、操作数类型与寻址方式 三、数据寻址 四、立即寻址 立即寻址:形式地址A就是操作数本身,又称为立即数,一般采用补码形式。#表示立即寻址特征。 一条指令的执行:取指令访存1次,执行指令访存0次,暂…

使用 docker 搭建开发环境

作为一个 freelancer,经常能够接到很多的开发工作,这些金主,有喜欢 PHP 的,有习惯撒手不管的;有偏好 sqlite 的,也有喜欢 PG 的,我甚至见过 mysql、PG 一起使用的项目;同一门语言下&…

数据库和ORMS:使用 Motor 跟 MongoDB 通信

文章目录1. 安装2. 创建models3. 连接数据库4. 插入文档5. 查询6. 更新、删除7. 嵌套文档learn from 《Building Data Science Applications with FastAPI》面向文档的数据库(如MongoDB)不需要预先配置模式 Motor,这是一个用于与 MongoDB 异…

指令系统——数据寻址(2)(详解)

一、总览 二、偏移寻址 基址寻址:将CPU中基址寄存器(BR)的内容加上指令格式中的形式地址A,而形成操作数的有效地址,即EA(BR)A。 注:基址寄存器是面向操作系统的,其内容由…

十五、MySQL变量(系统变量、自定义变量)相关知识总结

变量: 系统变量: a.全局变量 b.会话变量 自定义变量: a.用户变量 b.局部变量 一、系统变量 说明:变量由系统定义,不是用户定义,属于服务器层面 注意:全局变量需要添加global关键字,会话变量…

LeetCode 2210. 统计数组中峰和谷的数量

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的整数数组 nums 。如果两侧距 i 最近的不相等邻居的值均小于 nums[i] ,则下标 i 是 nums 中,某个峰的一部分。 类似地,如果两侧距 i 最近的不相等邻居的值均大于 nums[i] ,…

【项目总结】如何获取地图上的所有POI

1. 地图POI数据是什么,有什么用 关于地图数据123,可以参考一下这篇 https://www.zhihu.com/question/21530085/answer/18728706,回答了很多信息;下图是摘自其中,展示了建立一个地图需要的几个图层数据,从底…

十六、MySQL流程控制结构(顺序、分支、循环)详解 强化练习

流程控制结构:顺序、分支、循环 一、分支结构 case结构作为表达式: case结构作为独立的语句: if函数 语法:if(条件,值1,值2) 功能:实现双分支 应用在begin end中或外面 case结构 语法: 情…

LeetCode 2211. 统计道路上的碰撞次数

文章目录1. 题目2. 解题1. 题目 在一条无限长的公路上有 n 辆汽车正在行驶。汽车按从左到右的顺序按从 0 到 n - 1 编号,每辆车都在一个 独特的 位置。 给你一个下标从 0 开始的字符串 directions ,长度为 n 。 directions[i] 可以是 ‘L’、‘R’ 或 …

服务端的思考

概述 我们思考发布一个web服务需要做的工作,并进行职责的划分。职责的划分 通常我们会先制定抽象的接口,然后根据接口构造实现类。接口和实现类都完成了,再实施发布。所以,服务端的角色可以划分为:服务接口、服务实现、…

IPv6数据报详解

一、为什么有IPv6? 二、IPv6数据报格式 版本:指明了协议版本,总是6。 优先级:区分数据报的类别和优先级。 流标签:“流”是互联网络上从特定源点到特定终点的一系列数据报。所有属于同一个流的数据报都具有同样的流标签…

LeetCode 2212. 射箭比赛中的最大得分(状态枚举)

文章目录1. 题目2. 解题1. 题目 Alice 和 Bob 是一场射箭比赛中的对手。比赛规则如下: Alice 先射 numArrows 支箭,然后 Bob 也射 numArrows 支箭。 分数按下述规则计算: 箭靶有若干整数计分区域,范围从 0 到 11 (…

web前端复习系列[1]——标签

<h1>一般用于网站标题。加入强调语气&#xff0c;使用<strong>和<em>标签。<em> 表示强调&#xff0c;<strong> 表示更强烈的强调。并且在浏览器中<em> 默认用斜体表示&#xff0c;<strong> 用粗体表示。两个标签相比&#xff0c;目…

十七、MySQL触发器(创建、删除、查看)详解

触发器 一、介绍 触发器是与表有关的数据库对象&#xff0c;指在 insert/update/delete 之前或之后&#xff0c;触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性 , 日志记录 , 数据校验等操作 。 使用别名 OLD 和 NEW 来引用…

LeetCode 2215. 找出两数组的不同(set)

文章目录1. 题目2. 解题1. 题目 给你两个下标从 0 开始的整数数组 nums1 和 nums2 &#xff0c;请你返回一个长度为 2 的列表 answer &#xff0c;其中&#xff1a; answer[0] 是 nums1 中所有 不 存在于 nums2 中的 不同 整数组成的列表。answer[1] 是 nums2 中所有 不 存在…

HDOJ 5071 Chat 模拟

大模拟&#xff1a; 1》saygoodbye要先对 always on top 的人说 2》对没有说过话的不要说good bye 3》用long long Chat Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 337 Accepted Submission(s): 82Prob…