当前位置: 首页 > news >正文

控制器指令

cpu中有控制器和运算器

这里就要开始学控制器

指令

指令分为两个部分:

操作码

做什么事情

地址码

对谁做

当cpu检测到操作码为000110的时候,就要执行停机操作

指令是计算机的最小功能单位

计算机智能执行自己指令系统中的指令,不能执行其他系统的指令

比如说inter芯片一般都是x86架构的,而m1芯片用的是arm架构

零地址指令

【op】

只需要操作码,不需要地址码

例子:
1.不需要操作数的操作如:空操作,停机,关中断(操作系统里的知识)

2.堆栈计算机:两个操作数隐含在栈顶和次栈顶,计算结果押回栈顶(数据结构的知识)后缀表达式就是这样的

一地址指令

【op】【A1】

1.只需要一个操作:加1,减1,取反,求补等

指令含义:op(A1)->A1

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

指令含义:(ACC)OP(A1)->ACC

二地址指令,三地址指令

二地址指令通常需要两个操作数的算术运算。逻辑运算指令

指令含义(A1)op(A2)->A1

完成这条指令需要访问内存四次,取址-》读A1-〉读A2-》写A1

三地址指令,和二地址类似,在这里我们会指出最后的数据要存在哪里

(A1)op(A2)->A3

完成这条指令也需要访问内存四次,取址-》读A1-〉读A2-》写A3

四地址指令

(A1)op(A2)->A3,A4=下一条将要执行的指令

完成一条指令需要访问内存4次,取址-》读A1-〉读A2-》写A3

正常情况下,取指令之后pc+1,指向下一条指令,但是这里,它会指向A4所指向的位置

指令按照长度分配

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

机器字长:cpu镜像一次证书运算所能处理的二进制数据的位数(通常和ALU直接相关)

存储字长:一个存储单元中,二进制代码的位数

半字长指令,单字长指令,双字长指令---指令长度是机器长度的多少倍

指令字长会印象取指令的时间。比如机器字长=存储字长=16bit,那么取一条双字长的指令需要两次访问内存

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

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

定长操作码:指令系统中所有指令的操作码长度都相等

这样的控制器译码电路设计起来比较简单,但是灵活性低

n位-》2^n条指令

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

译码电路设计复杂,但是灵活性高

指令按照操作类型分类

数据传送

load:吧存储器中的数据传输到寄存器中

store:把寄存器中的数据传输到存储器中

算数逻辑操作

算数:加减乘除,加一,减一,求补,浮点运算,十进制运算

逻辑:与或非,异或,位操作,位测试,位清楚,位求反

移位操作:算数移位,逻辑移位,循环移位(带进位和不带进位)

转移操作: 执行这些操作都会让pc的值发生变化
无条件转移 JMP

​ 条件转移:JZ结果0 JO结果已出 JC结果有进位

​ 调用和返回:CALL RETURN

​ 陷阱(TRAP)与陷阱指令

输入输出操作:CPU寄存器与io端口之间的数据传送

![image-20250914154547531](/Users/tusier/Library/Application Support/typora-user-images/image-20250914154547531.png)

http://www.wxhsa.cn/company.asp?id=3651

相关文章:

  • 题解:AT_abc421_c [ABC421C] Alternated
  • MySQL数据库:SQL数据类型
  • Ubuntu 安装
  • 幼等数论
  • 搭建rocketmq的三主三从遇到的坑
  • 深入解析:轻松Linux-9.进程间通信
  • 2025.9.14——1黄1绿
  • Ubuntu 中改图片大小
  • Day01
  • 认识眼图和眼图的参数
  • 【芯片设计-信号完整性 SI 学习 1.2 -- loopback 回环测试】 - 实践
  • 【科研绘图系列】R语言绘制地图和散点图 - 指南
  • Java NIO 学习小记
  • 扩展欧几里得算法求乘法逆元
  • redis实现缓存3-封装redis工具类
  • 高阻态
  • 鸿蒙应用开发从入门到实战(四):ArkTS 语言概述
  • 命令模式的深度解析:从标准实现到TPL Dataflow高性能架构
  • JavaWeb
  • 读书笔记:为什么数据在磁盘上的存放顺序如此重要?
  • Rcc_APBPeriphClockCmd()
  • 故障处理:ORA-19809: limit exceeded for recovery files
  • ORA-01555系列:二、ORA-01555的场景分析与解决方案
  • PySimpleGUI常用控件
  • 25.09.14 与其感慨路难行,不如马上出发
  • GCC工具链应用学习笔记
  • 初始化 MCP 环境 创建 MCP Server (一)
  • 博客园格式设置
  • [总结/备赛]备战 CSP-S 2025 初赛总结
  • win11 系统如何进行硬盘分区?固态硬盘怎么分区?SSD 固态硬盘是分区好还是不分区好?