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次方条指令
  • 优:定长操作码对于简化计算机硬件设计,提高指令译码和识别速度很有利
  • 缺:指令数量增加时会占用更多固定位,留给表示操作数地址的位数受限

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

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

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

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

相关文章

4.6 Windows驱动开发:内核遍历进程VAD结构体

在上一篇文章《内核中实现Dump进程转储》中我们实现了ARK工具的转存功能,本篇文章继续以内存为出发点介绍VAD结构,该结构的全程是Virtual Address Descriptor即虚拟地址描述符,VAD是一个AVL自平衡二叉树,树的每一个节点代表一段虚…

AlphaControls控件TsDBCombobox出错:访问违规

日常使用AlphaControls控件TsDBCombobox,作为数据变化数据的控件。通常正常使用,一日 发现,出现以下错误: 控件访问违规的源代码,出错代码: function TacMainWnd.CallPrevWndProc(const Handle: hwnd; co…

LrC ACR :优化的 AI 天空蒙版

在 Lightroom Classic 和 Adobe Camera Raw 中创建基于 AI 技术的天空蒙版时,可能由于底层算法的原因,选中的天空蒙版在边缘处有晕开的现象(又称为“出血” Bleed),从而导致天空蒙版不是很精准。 本文提供了一种特殊方…

无需公网IP,使用MCSM面板一键搭建我的世界Minecraft服务器联机游戏

文章目录 前言1.Mcsmanager安装2.创建Minecraft服务器3.本地测试联机4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射内网端口 5.远程联机测试6. 配置固定远程联机端口地址6.1 保留一个固定TCP地址6.2 配置固定TCP地址 7. 使用固定公网地址远程联机 前言 MCSManager是一个…

Ghidra逆向工具配置 MacOS 的启动台显示(Python)

写在前面 通过 ghidra 工具, 但是只能用命令行启动, 不太舒服, 写个脚本生成 MacOS 的 app 格式并导入启动台. 不算复杂, 主要是解析包的一些元信息还有裁剪软件图标(通过 MacOS 自带的 API) 脚本 #!/opt/homebrew/bin/python3import os import re import subprocess as sp…

软件质量保护与测试(第2版)学习总结第十三章 集成测试

很多人都认为微软是一家软件开发公司,事实上我们是一家软件测试公司。 ---比尔盖茨 集成测试是在单元测试的基础上将多个模块组合在一起进行测试的过程。 13.1.1 区别 单元测试主要关注模块内部,系统测试则是在用户的角度来评价系统&#xff…

【Python3】【力扣题】303. 区域和检索 - 数组不可变

【力扣题】题目描述: 【Python3】代码: 1、解题思路:从列表中获取指定下标的所有元素,求和。 知识点:列表[start:end]:切片。从列表中获取起始下标start(含)到结束下标end&#xf…

【漏洞复现】​金和OA存在任意文件读取漏洞

漏洞描述 金和OA协同办公管理系统C6软件(简称金和OA),本着简单、适用、高效的原则,贴合企事业单位的实际需求,实行通用化、标准化、智能化、人性化的产品设计,充分体现企事业单位规范管理、提高办公效率的核心思想,为用户提供一整套标准的办公自动化解决方案,以帮助企…

【bigo前端】egret中的对象池浅谈

本文首发于:https://github.com/bigo-frontend/blog/ 欢迎关注、转载。 egret是一款小游戏开发引擎,支持跨平台开发,之前使用这款引擎开发了一款捕鱼游戏,在这里简单聊下再egret中关于对象池的使用,虽然该引擎已经停止…

杭州-区块链前瞻性论坛邀请函​

2023密码与安全前瞻性论坛邀请函 生成合法节点或非法节点,测试共识协议

Maven依赖传递和依赖冲突以及继承和聚合关系详解

Java全能学习面试指南:https://javaxiaobear.cn 1、Maven依赖传递和依赖冲突 1. Maven依赖传递特性 概念 假如有Maven项目A,项目B依赖A,项目C依赖B。那么我们可以说 C依赖A。也就是说,依赖的关系为:C—>B—>…

安卓环境搭建及运行安卓应用

1 jdk安装 安卓项目也是java开发的,运行在虚拟器上,安装jdk及运行的时候,就会带上虚拟器 jdk前面已经讲过,不在讲解 2 下载安装androj studio https://developer.android.google.cn/studio?hlzh-cn 下载下来,双击…