【从零开始学习计算机科学】计算机组成原理(四)指令系统
- 指令系统
- 指令概述
- 操作码
- 地址码
- 机器字长
- 指令字长
- 指令结构
- 指令助记符
- 指令的寻址方式
- 数据存储存在的问题
- 操作数的寻址方式
- 隐含寻址
- 立即寻址
- 直接寻址
- 间接寻址
- 寄存器直接寻址
- 寄存器间接寻址
- 相对寻址方式
- 基址寻址方式
- 变址寻址方式
- 扩展型变址方式
- 堆栈寻址方式
- 指令的分类
- 精简指令系统计算机(RISC)
- 第一代RISC处理器
- 第二代RISC处理器
- 第三代RISC处理器
- RISC指令系统
- 指令系统的兼容问题
- CISC的兼容性
- RISC的兼容性
指令系统
指令概述
用计算机解题时,一般都要编制程序,程序既可用高级语言编写,亦可用机器语言编写,但计算机只能够识别和执行用机器语言编写的程序,各种高级语言编写的应用程序,最终都要翻译成机器语言来执行。
机器语言是由一系列的指令(语句)组成的,指令的格式就是机器语言的语法。每条指令规定机器完成一定的功能,一台计算机的所有的指令集合称为该机的指令系统或指令集。它是程序工作者编制程序的基本依据,也是进行计算机逻辑设计的基本依据。
一条指令应包含如下信息:
- 进行何种操作,即操作性质。体现在指令中被称为操作码;
- 操作的对象,数据来源以及如何寻找操作数。体现在指令中被称为地址码;
- 下一条指令又如何寻找。
指令一般由操作码和地址码两部分组成,它的基本格式如下:<操作码> <地址码>
。
操作码
操作码是说明指令操作性质的二进制数代码。操作码所占的二进制位数决定了一台计算机所能允许的指令条数。例如,操作码占用六位二进制码时,这台计算机最多允许有 2 6 = 64 2^6 = 64 26=64条指令。
操作码字段分两种:
-
固定长度操作码:固定长度操作码是指操作码所占的二进制位数固定不变,而且集中放在指令字的一个字段中。这种格式有利于简化硬件设计,减少指令译码时间,广泛用于字长较长的大、中型计算机和超级小型计算机中。例如IBM370和VAX-11系列机中,操作码的长度都是8位,可表示256条指令。
-
可变长度操作码:可变长度操作码是操作码扩展技术的应用,即操作码的长度是可变的,且分散地放在指令的不同字段中。这种格式有利于压缩程序中操作码的平均长度,在字长较短的微型机中被广泛应用。如:PDP-11,INTEL 8086/80386等,其操作码的长度均是可变的。在可变长操作码的指令系统设计中,究竟使用何种扩展方法为好,指令的使用频度(即在程序中出现的概率)是非常重要的依据。即频度高的指令应分配短的操作码,频度低的指令则分配较长的操作码。这样,既可有效地缩短操作码在程序中的平均长度,节省存储空间,又可缩短常用指令的译码时间以提高程序的运行速度。可变长度操作码的缺点是译码系统比固定操作码复杂,增加了设计控制器的难度,需要更多的硬件作支持。
地址码
指令中的地址码用来指出该指令的源操作数地址(一个或两个)、结果地址及下一条指令的地址。这里的地址可以是主存地址,也可以是寄存器地址,甚至可以是I/O设备的地址。
机器字长
机器字长度简称字长,指计算机能直接处理的二进制数据的位数。字长是计算机中的一项重要技术指标,字长越长,计算机的运算精度越高,字长还能反映指令的直接寻址能力,若字长n位全用来寻址,可直接 寻址 2 n 2^n 2n个字节,为了便于处理字符数据及尽可能地利用存储空间,一般把机器字长定为字节长度(8位)的整数倍,即是8位、16位、 32位或64位。
微型、小型机的字长多为8位、16位和32位,中、大型机的字长多为32位和64位。因此,一个字中可以存储1个、2个、4个或8个字符。
指令字长
指令字的长度取决于操作码的长度、操作数地址的长度和操作数地址的个数。由于操作码的长度、操作数地址的长度以及所采用操作数地址数目不同,各种指令的长度不是固定的,当然也不是任意的。
为了充分利用存储空间,指令字的长度也定为字节长度的整数倍。例如INTEL 8086/80586系列机的指