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