计算机指令格式
(3)地址结构
指令中的地址码用来指出该指令的源操作数地址 ( 一个
(2) 对指令系统性能的要求
指令系统的性能决定了计算机的基本功能, 它的设计直接关系到计算机的硬件结构和用 户的需要。
一个完善的指令系统应满足如下四方面的 要求: •完备性 •有效性 •规整性 •兼容性
2 指令格式
一条指令应包含如下信息:
进行何种操作:即操作性质。 体现在指令中被称为操作码。 操作的对象:数据来源以及如何寻找操作数。 体现在指令中被称为地址码 操作结果:结果存放在何处。
在可变长操作码的指令系统设计中,究竟使 用何种扩展方法为好,指令的使用频度(即 在程序中出现的概率)是非常重要的依据。 即频度高的指令应分配短的操作码,频度低 的指令则分配较长的操作码。 缺点是译码系统比固定操作码复杂,增加了 设计控制器的难度,需要更多的硬件作支持。
例如: 设某台计算机有100条指令, (1) 采用固定长度操作码编码,试设 计其操作码的编码。 (2) 假如这100条指令中有10条指令的 使用概率达到90%,其余90条指令的使 用概率为10%。试采用不等长编码设计 操作码。
解:
(1)固定长度操作码编码:需7位操作码。
100个代码作为100条指令指令操作码即
0000000
0000001 … 1100011
指令0的操作码
指令1的操作码 指令99的操作码
剩下28个代码可用于增加新指令,长度都是7位。
1100100
…
1111111
解:可变长度操作码编码 ⑵ 10条指令:需4位操作码编码 0000 … 1001 指令9的操作码 指令0的操作码
2)方法二:扩展操作码
操作码
15-12 11-8
地址码
7-4 3-0
4 位操作码
0000 0001 1110 … … … …
A1 A1 A1
A2 A2 A2 A2 A2 A2
A3 A3 A3 A3 A3 A3
15条三地址指令
…
…
…
8 位操作码
1111 1111 1111
0000 0001 1110 …
指令系统:机器指令的集合称为计算机的指令系统, 即CPU所能识别的全部指令。
软件 指令系统
硬件
(1)指令系统的发展
•50年代:指令系统只有定点加减、逻辑运算、数据传 送、转移等十几至几十条指令。 •60年代后期:增加了乘除运算、浮点运算、十进制运 算、字符串处理等指令,指令数目多达一二百条,寻址 方式也趋多样化。 •70年代末期:大多数计算机的指令系统多达几百条。我 们称这些计算机为复杂指令系统计算机(CISC)。但是如 此庞大的指令系统难以保证正确性,不易调试维护,造 成硬件资源浪费。为此人们又提出了便于VLSI技术实现 的精简指令系统计算机(RISC)。
15条二地址指令
…
…
12 位操作码
1111 1111
1111
1111 1111
1111 …
0000 0001
1110 …
A3 A3
A3
15条一地址指令
…
16 位操作码
1111 1111
1111
1111 1111
1111 …
1111 1111
1111 …
0000 0001
1111 …
16条零地址指令
指令字长与机器字长没有固定的关系。 等长指令字结构:在一个指令系统中,各种指令字 长度是相等的。 优点:指令字结构简单:取指快、译码简单,便于 控制。 变长指令字结构:在一个指令系统中,各种指令字 长度随指令功能而异,按字节的倍数变化。
优点:指令字结构灵活,合理利用存储空间; 缺点: 指令的控制较复杂。
第11讲 指令格式
1 指令系统的发展与性 能要求 2 指令格式 3 寻址方式
1
1 指令系统的发展与性能要求
微指令
指令:微机完成规定操作的命令
机器指令 微指令:微程序级的命令,它属于硬件。 宏指令
宏指令:由若干条机器指令组成的软件指令,它属于软
件。 机器指令(指令):介于微指令与宏指令之间,每条指 令可完成一个独立的算术运算或逻辑运算。
90条指令:需8位操作码编码 10100000 … 11111001 (249) (160)
扩展操作码的组合方案可以有多种,但各条指令的 操作码一定不能重复,而且各指令应能正确译码。
霍夫曼编码:对使用频度较高的指令,分配较短的 操作码字段;对使用频度较低的指令,分配较长的操 作码字段。 扩展操作码介于定长编码和霍夫曼编码之间,操作 码字段的位数既不是固定的,又不是任意的,而是有 限的几种码长。
1)固定格式--定长操作码
各指令操作码的位置、位数固定相同。
2)可变格式--扩展操作码
各指令操作码的位置、位数不固定,根据需要变 化,操作码的位数随地址数的减少而增加。关键在设 置扩展标志。
假设一台计算机指令字长16位,操作码与地 址码都为4位,如图所示。
OP A1 A2 A3
1)方法一:固定格式,则最多可以设计16条 三地址指令。显然,4位基本操作码是不够的, 必须向地址码字段扩展操作码的长度。 2)方法二:扩展操作码 该指令可以包含3、2、1或0个地址。
指令 指令
I
I+1 I+2 I+3 I+4
指令1
指令2
I+1
I+2
指令3
I+3
┆ ┆
I+5
I+6 ┆
单字长指令
双字长指令
式
•操作码反映机器做什么操作。 •操作码所占的二进制位数决定了一台计算机所能允 许的指令条数。 例如,操作码占用六位二进制码时,这台计算机 最多允许有: 26=64 条指令
单字长指令:指令字长等于机器字长; 双字长指令:指令字长等于两个机器字长; 半字长指令:指令字长只有半个机器字长。
各种指令字的结构情况
一个字长
地址 I I+1 I+2 I+3 指 指 指 指 令 令 令 令 ┆ 地址 I 一个字长 一个字长 一个字长 地址
地址
I 指令1 I+1 I+2 指令2 I+3 指令 指令 ┆ ┆ 指令 指令 指令 指令
下一条指令又如何寻找
操作码字段OP
一个
地址码字段A
一个、多个或0个
(1) 指令字长
1) 指令字长:一个指令字中包含二进制代码 的位数。 指令字的长度取决于操作码的长度、操作 数地址的长度和操作数地址的个数。 2)机器字长:计算机能直接处理的二进制数据 的位数,它决定了计算机的运算能力。
3) 指令字长与机器字长的关系