【计算机组成原理】指令系统(一)—— 指令格式
一、指令的定义
指令(又称机器指令):是指示计算机执行某种操作的命令,是计算机运行的最小功能单位
。
一台计算机的所有指令的集合构成该机的指令系统,也称为指令集。
注:一台计算机只能执行自己指令系统中的指令,不能执行其他系统的指令。 Eg:x86 架构、ARM架构。
几种字长的总结
- 指令字长:一条指令的总长度(可能会变)。
- 机器字长:CPU进行一次整数运算所能处理的二进制数据的位数(通常和ALU直接相关)。
- 存储字长:一个存储单元中的二进制代码位数(通常和MDR位数相同)。
半字长指令、单字长指令、双字长指令 —— 指令长度是机器字长的多少倍。
指令字长会影响取指令所需时间。如:机器字长 = 存储字长=16bit,则取一条双字长指令需要两次访存。
二、指令格式与分类
一条指令就是机器语言的一个语句,它是一组有意义的二进制代码。一条指令通常要包括操作码
字段和地址码
字段两部分。
- 根据地址码数目不同,可以将指令分为 零地址指令、一地址指令、二地址指令。
- 根据指令长度分类可以分为 定长操作码和可变长操作码
(一)、指令-按地址码数目分类
1. 零地址指令
- 不需要操作数,如空操作、停机、关中断等指令。
- 堆栈计算机,两个操作数隐含存放在栈顶和次栈顶,计算结果压回栈顶。
堆栈计算机在数据结构的体现:“后缀表达式”。
2. 一地址指令
- 只需要单操作数,如加1、减1、取反、求补等
指令含义:OP( A 1 A_1 A1) → A 1 A_1 A1 ,完成一条指令需要3次访存:取指 → 读 A 1 A_1 A1 → 写 A 1 A_1 A1
- 需要两个操作数,但其中一个操作数隐含在某个寄存器(如隐含在ACC)
指令含义: (ACC)OP( A 1 A_1 A1) → ACC , 完成一条指令需要2次访存:取指 → 读 A 1 A_1 A1
注: A 1 A_1 A1指某个主存地址, ( A 1 A_1 A1)表示 A 1 A_1 A1 所指向的地址中的内容。
3. 二地址指令
常用于需要两个操作数的算术运算、逻辑运算相关指令
指令含义:( A 1 A_1 A1)OP( A 2 A_2 A2) → A 1 A_1 A1
完成一条指令需要访存4次,取指 → 读 A 1 A_1 A1 → 读 A 2 A_2 A2 → 写 A 1 A_1 A1
4. 三地址指令
常用于需要两个操作数的算术运算、逻辑运算相关指令
指令含义:( A 1 A_1 A1)OP( A 2 A_2 A2) → A 3 A_3 A3
完成一条指令需要访存4次,取指 → 读 A 1 A_1 A1 → 读 A 2 A_2 A2 → 写 A 3 A_3 A3
5. 四地址指令
指令含义:(
A
1
A_1
A1)OP(
A
2
A_2
A2) →
A
3
A_3
A3,
A
4
A_4
A4 = 下一条将要执行指令的地址;
完成一条指令需要访存4次,取指 → 读 A 1 A_1 A1 → 读 A 2 A_2 A2 → 写 A 3 A_3 A3
正常情况下:取指令之后 PC+1,指向下一条指令
四地址指令:执行指令后,将PC的值修改位 A 4 A_4 A4所指地址
6. 指令-按地址码数目分类总结
(二)、指令-按指令长度分类
定长指令字结构:指令系统中所有指令的长度都相等
变长指令字结构:指令系统中各种指令的长度不等
定长操作码:指令系统中所有指令的操作码长度都相同,控制器的译码电路设计简单。
可变长操作码:指令系统中各指令的操作码长度可变
n 位 →
2
n
2^n
2n条指令,控制器的译码电路设计复杂, 但灵活性较高。
定长指令字结构 + 可变长操作码 → 扩展操作码指令格式