指令的基本格式:结构、长度、分类
一. 指令的基本格式
一条指令就是机器语言的一个语句,它是一组有意义的二进制代码。
1. 结构
一条指令通常包括操作码字段和地址码字段两部分。
(1) 操作码 OP:指出指令中应该执行什么性质的操作和具有何种功能。即进行什么操作,如取数、乘法、加法、停机。
(2) 地址码 Ai:给出被操作的信息(指令或者数据)的地址。即对谁进行操作。
2. 长度
(1) 指令字长:一条指令的总长度(可能会变)。
(2) 机器字长:CPU 进行一次整数运算所能处理的二进制数据的位数(通常和 ALU 直接相关)(固定不变)。
(3) 存储字长:一个存储单元中的二进制代码位数(通常和 MDR 位数相同)(固定不变)。
什么是指令字长、机器字长和存储字长?
指令字长是指一个指令字中包含二进制代码的位数。机器字长指计算机能直接处理的二进制数据的位数。存储字长指一个存储单元存储一串二进制代码(存储字)的位数。
指令字长会影响取指令所需时间。如:机器字长 = 存储字长 = 16bit,则取一条双字长指令(32bit)需要两次访存。
① 按指令长度分类
- 单字长指令:长度等于机器字长。
- 双字长指令:长度等于两倍机器字长。
- 半字长指令:长度等于半个机器字长。
- 定长指令字结构:所有指令长度相同。
- 变长指令字结构:各种指令长度不同。
② 按操作码长度分类
- 定长操作码:指令系统中所有指令的操作码长度都相同。n 位的操作码可以支持 2n 条指令。控制器的译码电路设计简单,但灵活性较低。
- 可变长操作码:指令系统中各指令的操作码长度可变。控制器的译码电路设计复杂,但灵活性较高。
3. 根据操作数地址码数目分类
(1) 零地址指令
只给出操作码,没有给出地址。
- ① 不需要操作数的指令。如停机指令、空操作指令、关中断指令。
- ② 零地址的运算类指令仅使用在堆栈计算机中
通常参与运算的两个操作数隐含的从栈顶和次栈顶弹出,送到运算器进行运算,运算结果再隐含地压入堆栈。
类似于用栈实现中缀转后缀,详见 3-2 栈和队列 - 应用 - 2. 表达式求值 - (6) 用栈实现中缀转后缀(运算符栈)。
(2) 一地址指令
给出操作码和一个地址码。若指令字长 32 位,操作码 8 位,地址码 24 位,则指令操作数直接寻址范围为 224,其他同理
- ① 只有目的操作数的单操作指令
按 A1 读取操作数,进行 OP 操作后,结果存回源地址。对地址码指定位置的操作数进行操作码操作,存回地址码指定位置 OP(A1) → A1
如:加 1、减 1、取反
A1 指某个主存地址,(A1) 表示 A1 所指向的地址中的内容
需要三次访存:取指令、取操作数、存放结果
- ② 隐含约定目的地址的双操作数指令
按指令地址 A1 读取源操作数,指令可隐含约定。另一个操作数由 ACC 提供,运算结果也存入 ACC 中。对地址码指定位置的操作数与 ACC 存放的操作数进行操作码运算,结果存入 ACC,即 (ACC) OP(A1) → ACC
如:加法、减法、乘法、除法
需要两次访存:取指令、取操作数
(3) 二地址指令
给出操作码和两个地址码。常用于需要两个操作数的算术运算、逻辑运算相关指令。
对目的地址码 A1 指明的目的操作数和源地址码 A2 指明的源操作数进行操作码执行的运算,结果存回目的操作数的地址 A1(目的地址码),即 (A1) OP(A2) → A1
需要四次访存:取指令、取两个操作数、存放结果
(4) 三地址指令
(A1) OP(A2) → A3
需要四次访存:取指令、取两个操作数、存放结果
(5) 四地址指令
(A1) OP(A2) → A3,A4 指明下一条要执行指令的地址
需要四次访存:取指令、取两个操作数、存放结果
正常情况下,取指令后 (PC) + 1 → PC,PC 自动指向下一条指令。但在四地址指令中,应该将 PC 的值修改为 A4 所指向的地址
二. 扩展操作码指令格式
扩展操作码是定长指令字结构(所有指令长度相同)和可变长操作码(操作码的长度可变)的结合。操作码的长度随地址码的减少而增加,不同地址数的指令可具有不同长度的操作码,从而在满足需要的前提下,有效地缩短指令字长。但增加了指令译码和分析的难度,使控制器的设计复杂化。
1. 三地址指令:OP 4 位,0000 ~ 1110,15 条
对于三地址指令,前 4 位为基本操作码 OP,后面三个地址字段 A1、A2、A3 分别占 4 位,指令字长共 16 位。4 位基本操作码若全部用于三地址指令,即从 0000 到 1111 共 16 条。为保证零地址、一地址、二地址指令的使用,需留出 1111 开头的 OP 作为扩展操作码。因此三地址指令共 15 条。
2. 二地址指令:OP 8 位,11110000 ~ 11111110,15 条
对于二地址指令,前 8 位为基本操作码 OP,后面两个地址字段 A1、A2 分别占 4 位,指令字长共 16 位(不变)。8 位基本操作码若全部用于二地址指令,二地址指令的 OP 以 111 开头,范围 1111 0000 ~ 1111 1111,共 16 条。同样二地址指令需要将 1111 1111 开头的 OP 留作扩展操作码,供一地址和零地址使用。因此二地址指令共 15 条。
3. 一地址指令:OP 12 位,
原文地址: https://www.cveoy.top/t/topic/Rud 著作权归作者所有。请勿转载和采集!