计算机组成原理学习笔记——机器指令的基本结构
机器指令的基本结构
〇、何为指令?
- 指令,或者说
机器指令
,是指示计算机执行某种操作的命令,是计算机运行的最小功能单位
。
一台计算机的所有指令集合构成该机的指令系统,也称指令集
。指令系统是计算机的主要属性,位于硬件和软件的交界面上。
一、基本格式
-
机器指令就是机器语言,一组有意义的
二进制代码
,通常由操作码字段和地址码字段
组成。 -
操作码,用于指出该指令要
执行什么操作和具有何种功能
,是识别指令、了解指令以及区分操作数地址内容的组成和使用方法等的关键信息。 -
地址码给出
被操作的信息
,指令或数据的地址,包括参加运算的一个或多个操作数所在的地址、运算结果的保存地址、程序的转移地址、被调用的子程序的入口地址等。 -
指令长度与机器字长没有固定关系,可以等于、大于或小于机器字长,通常,指令字长等于机器字长的称为
单字长指令
,指令长度等于半个机器字长的称为半字长指令
,指令长度等于两个机器字长称为双字长指令
。
在一个指令系统中,若所有指令的长度都相等则称为定长指令字结构
,优点是执行速度快,控制简单。若各种指令的长度随指令功能而异,则称为变长指令字结构
。 -
根据指令操作数地址码的数目的不同分为
零地址指令、一地址指令、二地址指令、三地址指令和四地址指令
。
1、零地址指令
- 只有
操作码
,而没有给出地址码。其结构如下: - 这种指令有两种可能情况:
- 1)
不需要
操作数的指令,如空栈指令、停机指令、关中断指令等。 - 2)零地址的运算类指令仅用在
堆栈计算机
中。通常参与运算的两个操作数隐含地从栈顶和次栈顶弹出,送到运算器进行运算,运算结构再隐含压入堆栈。
2、一地址指令
- 只有一个地址码,结构如下:
- 这种指令也有两种常见形态,根据操作码含义确定究竟是哪一种。
- 1)只有目的操作数地单操作数指令,按 A1 地址读取操作数,进行 OP 操作后,结果存回原地址。
指令含义:OP(A1)→A1
,如加1、求反、求补等。 - 2)
隐含约定目的地址
的双操作数指令,按指令地址 A1 可读取源操作数,指令可隐含约定另一个操作数由ACC(累加器)提供
,运算结果也存放在 ACC 中。 - 指令含义:
(ACC)OP(A1)→ACC
- 若指令字长为 32 位,操作码占 8 位,1 个地址码字段占 24 位,则指令操作数地
直接寻址范围 2^24 = 16,777,216 = 16M
.
3、二地址指令
- 二地址指令地结构如下:
- 指令含义:
(A1)OP(A1)→A1
- 常用地算术和逻辑运算指令,往往要求两个操作数,需分别给出目的操作数和源操作数地地址,其中目的操作数地址还用于保存本次地运算结果。
- 若指令字长 32 位,操作码占 8 位,两个地址码字段占 12 位,则指令操作数地
直接寻址范围为 2^12 = 4,096 = 4K.
4、三地址指令
- 结构如下:
- 指令含义:
(A1)OP(A2)→A3
- 若指令字长为 32 位,操作码 8 位,3 个地址码各占 8 位,则指令操作数地
直接寻址范围 2^8 = 256
。若地址字段均为主存地址,则完成一条三地址的指令需要4 次访存
:取指一次,取两个操作数两次,保存结果 1 次。
5、四地址指令
- 指令结构如下:
- 指令含义:
(A1)OP(A2)→A3, A4=下一条将要执行指令的地址
。 - 若指令字长为 32 位,操作码 8 位, 4 个地址码字段各占 6 位,则指令操作数的
直接寻址范围为 2^6 = 64
.
二、定长操作码指令格式
- 定长操作码指令再指令字的最
高位部分分配固定的若干位
表示操作码。一般 n 位操作码字段的指令系统最大能够表示2^n
条指令。 - 定长操作码对于简化计算机硬件设计,
提高指令译码和识别速度
有利。当计算机字长位 32 位或更长时,这是常规做法。
三、变长操作码指令系统
-
为了再指令长度有限的前提下仍保持比较丰富的指令种类,可采取可变长操作码,缺点就是
增加指令译码和分析的难度
,使控制器的设计复杂化。 -
最常见的变长操作码方法是扩展操作码,使操作码长度随地址码的减少而增加,不同地址数的指令可具有不同长度的操作码。
-
此外还有其他扩展方法,比如,形成 15 条三地址指令、12 条二地址指令、63 条一地址指令和 16 条零地址指令,共 106 条指令。
-
设计扩展操作码时,注意如下:
-
1)
不允许短码是长码的前缀,即短操作码不能与长操作码的前面部分的代码相同
。 -
2)
各指令的操作码一定不能重复
。 -
通常情况,对使用频率较高的指令分配较短的操作码,对使用
频率较低
的指令分配较长的操作码
,从而尽可能减少指令译码和分析时间。