0%

4.1指令系统的基本格式

💡 TIP

image-20241229192614164

相关链接|

指令格式

image-20241229192842269

  • 一个指令可能包括包含 0个、1个、2个、3个、4个 地址码

    根据地址码的不同,可将指令分为 零地址指令、一级地址指令、二级地址指令 …

零地址指令op

零地址指令不需要指令操作数。

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

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

一地址指令

image-20241229193803322

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

    指令含义:$OP(A_1) \rightarrow A_1$

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

    指令含义:$(ACC)OP(A_1) \rightarrow ACC$

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

二地址指令

image-20241229194446575

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

指令含义:$(A_1)OP(A_2) \rightarrow A_1$

三地址指令

image-20241229194709849

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

指令含义:$(A_1)OP(A_2) \rightarrow A_3$

四地址指令

image-20241229194954820

指令含义:$(A_1)OP(A_2) \rightarrow A_3$,$A_4 = \text{下一条将要执行指令的地址}$

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

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

指令分类

image-20241229195639381

按指令长度分类

  • 指令字长:一条指令的长度 可能会变

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

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

💡 TIP

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

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

按操作码长度分类

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

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

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

按指令类型分类

image-20241229201035587

💡 TIP

总体上,我们将指令按类型分为:

  • 数据传送类:进行主存与 CPU 之间的数据传送

  • 运算类

  • 程序控制类:改变程序执行的顺序

  • 输入输出类:进行 CPU 和 I/O 设备之间的数据传送

回顾

image-20241229201409425


(完)