指令系统——指令格式

简介: 指令系统——指令格式

现代计算机的结构



这次就开搞控制器!


学会指令系统就可以更精进之前搞的典型过程了:https://yangyongli.blog.csdn.net/article/details/116792581


指令格式


指令的定义


指令(又称机器指令):是指示计算机执行某种操作的命令,是计算机运行的最小功能单位。


一台计算机的所有指令的集合构成该机的指令系统,也称为指令集。


注:一台计算机只能执行自己指令系统中的指令,不能执行其他系统的指令。


例如:x86 架构、ARM架构之间不能互相执行对方架构系统的指令。


指令格式


一条指令就是机器语言的一个语句,它是一组有意义的二进制代码。


一条指令通常要包括操作码字段和地址码字段两部分(如下图所示):



操作码就是要表达用户要干什么?


比如:停机中断、求反求补、加减乘除……


地址码就是要说明对谁进行操作?


比如:不需要操作对象、需要一个操作对象、需要两个操作对象……


其中 一条指令可能包含 0个、1个、2个、3个、4个 地址码…


根据地址码数目不同,可以将指令分为 零地址指令、一地址指令、二地址指令…


零地址指令



  1. 不需要操作数,如空操作、停机、关中断等指令


  1. 堆栈计算机,两个操作数隐含存放在栈顶和次栈顶,计算结果压回栈顶


一地址指令




  1. 只需要单操作数,如加1、减1、取反、求补等


指令含义:OP(A1)→A1 ,完成一条指令需要3次访存:取指→ 读A1 →写A1


  1. 需要两个操作数,但其中一个操作数隐含在某个寄存器(如隐含在ACC)


指令含义: (ACC)OP(A1)→ACC,完成一条指令需要2次访存:取指→ 读A1


注:A1 指某个主存地址, (A1)表示 A1 所指向的地址中的内容


二、三地址指令



常用于需要两个操作数的算术运算、逻辑运算相关指令


指令含义:(A1)OP(A2)→A1


完成一条指令需要访存4次,取指→读A1→读A2→写A1



常用于需要两个操作数的算术运算、逻辑运算相关指令


指令含义:(A1)OP(A2)→A3


完成一条指令需要访存4次,取指→ 读A1→读A2 →写A3


四地址指令



指令含义:(A1)OP(A2)→A3,A4=下一条将要执行指令的地址


完成一条指令需要访存4次,取指 →读A1 →读A2 →写A3


正常情况下:取指令之后 PC+1,指向下一条指令


四地址指令:执行指令后,将PC的值修改位 A4 所指地址


地址码的位数有什么影响?


n位地址码的直接寻址范围=2n,若指令总长度固定不变,则地址码数量越多,寻址能力越差


分类


指令-按地址码数目分类



指令-按指令长度分类


可以分为:半字长指令、单字长指令、双字长指令 ——指令长度是机器字长的多少倍


指令字长:一条指令的总长度(可能会变)


机器字长:CPU进行一次整数运算所能处理的二进制数据的位数(通常和ALU直接相关)


存储字长:一个存储单元中的二进制代码位数(通常和MDR位数相同)


指令字长会影响取指令所需时间。如:机器字长=存储字长=16bit,则取一条双字长指令需要两次访存


定长指令字结构:指令系统中所有指令的长度都相等


变长指令字结构:指令系统中各种指令的长度不等


指令-按操作码长度分类


  1. 定长操作码:指令系统中所有指令的操作码长度都相同(n位 → 2n条指令)

——控制器的译码电路设计简单,但灵活性较低


  1. 可变长操作码:指令系统中各指令的操作码长度可变

——控制器的译码电路设计复杂, 但灵活性较高


  1. 扩展操作码指令格式:定长指令字结构+可变长操作码


指令—按操作类型分类


  1. 数据传送(数据传送类:进行主存与CPU之间的数据传送)


LOAD 作用:把存储器(源)中的数据放到寄存器(目的)中


STORE 作用:把寄存器(源)中的数据放到存储器(目的)中


  1. 算术逻辑操作


算术:加、减、乘、除、增 1、减 1、求补、浮点运算、十进制运算


逻辑:与、或、非、异或、位操作、位测试、位清除、位求反


  1. 移位操作


算术移位、逻辑移位、循环移位(带进位和不带进位)


  1. 转移操作(程序控制类:改变程序执行的顺序)


无条件转移 JMP


条件转移 JZ:结果为0;JO:结果溢出;JC:结果有进位


调用和返回 CALL和RETURN


陷阱(Trap)与陷阱指令


  1. 输入输出操作(输入输出类(I/O):进行CPU和I/O设备之间的数据传送)

CPU寄存器与IO端口之间的数据传送(端口即IO接口中的寄存器)


小结


相关文章
|
JavaScript 定位技术 API
uniapp腾讯地图路线规划
uniapp腾讯地图路线规划
1139 0
|
安全 C++
【C++11保姆级教程】移动构造函数(move constructor)和移动赋值操作符(move assignment operator)
【C++11保姆级教程】移动构造函数(move constructor)和移动赋值操作符(move assignment operator)
1909 0
|
监控 数据可视化 数据挖掘
惊叹!燕云十六声运营团队靠它提升工作效率!
在游戏行业竞争激烈的2025蛇年新春,燕云十六声团队通过选择合适的可视化协作软件实现了高效工作。板栗看板以其高度可视化的任务管理、灵活的任务分配和强大的文件管理功能脱颖而出。Trello、Asana、Monday.com、Zeplin和Slack等工具也各具特色,提供了丰富的插件、权限管理和实时沟通等功能,助力团队应对巨大工作量和协作挑战,提升工作效率,打造更优质的游戏产品。
701 12
|
缓存 NoSQL Java
京东电商下单黄金链路:防止订单重复提交与支付的深度解析
【10月更文挑战第21天】在电商领域,尤其是在像京东这样的大型电商平台中,防止订单重复提交与支付是一项至关重要的任务。
824 44
|
存储 NoSQL 安全
【赵渝强老师】MongoDB的Journal日志
MongoDB通过Journal日志保证数据安全,记录检查点后的更新,确保数据库从异常中恢复到有效状态。每个Journal文件100M,存于--dbpath指定的journal子目录。默认已启用Journal日志,可通过--journal参数手动启用。WiredTiger存储引擎使用128KB内存缓冲区,异常关机时可能丢失最多128KB的数据。视频讲解和详细步骤参见附录。
409 17
|
监控 数据可视化 项目管理
高效时间管理工具如何帮助优化日常任务管理?2024年6款最优秀软件
在快节奏的现代工作环境中,高效的时间管理和任务协作工具成为提升生产力的关键。2024年,随着工作模式的变化,企业及个人愈发依赖这些工具来优化时间管理、任务分配和团队协作。本文精选了几款高效工具,如板栗看板、ClickUp、Notion、Wrike、Todoist和Evernote,它们各自具备独特优势,适用于不同行业和规模的团队,帮助用户在繁忙的工作中保持高效和有序。
2099 6
高效时间管理工具如何帮助优化日常任务管理?2024年6款最优秀软件
|
机器学习/深度学习 机器人 Serverless
FaaS 的应用场景
FaaS 的应用场景
|
存储 算法 Java
超全面!阿里巴巴最新发布23年秋招200道Java面试题(含答案)
马上过34岁生日了,和大家聊聊最近的情况 半年前还在迷茫该学什么,怎样才能走出现在的困境,半年后已经成功上岸阿里,感谢在这期间帮助我的每一个人。 面试中总结了200道经典的Java面试题,里面包含面试要回答的知识重点,并且我根据知识类型进行了分类,可以说非常全面了~ 因为篇幅原因,大部分的内容就不给大家一一展示了,需要获取的小伙伴可以直接点击此处取到! Java平台相关 1、JDK、JRE、JVM 分别是什么关系? 2、为什么 Java 被称作是“平台无关的编程语言”? 3、Java 和 C++ 的区别? 4、什么是字节码?采用字节码的最大好处是什么? 5、Java运行的过程? 6、
|
Java API Apache
Springboot 前后端分离项目使用 POI 生成并导出 Excel
Springboot 前后端分离项目使用 POI 生成并导出 Excel
2038 0
Springboot 前后端分离项目使用 POI 生成并导出 Excel
|
存储 数据采集 缓存
数据仓库设计的最佳实践
【6月更文挑战第16天】构建高效数据仓库的关键实践包括:明确业务与数据需求、选择适应的\[数据模型\](星型、雪花或事实星座)、设计优化的物理存储结构以提升查询与存储效率、保障数据质量与一致性、优化查询性能、以及确保可扩展性和灵活性。这些实践帮助企业应对数据增长,支持精准分析。