1. 指令
指令是计算机执行某种操作的命令,一条指令中包括:
操作码
操作数地址
操作结果的存储地址
下一条指令的地址
下面详细说明指令的格式:
一条指令由操作码OP和地址码A组成,如图所示
其中,操作码为一条指令的ID,具有唯一性,操作码的位数n与操作系统中指令的条数N有如下关系:
地址码指明该指令的操作数据或操作数的主存地址或寄存器地址。
按照地址码的个数分,可以分为:三地址、两地址、一地址、零地址指令
因此,指令长度 = 操作码位数 + 地址码的个数 × 地址码位数 。
2. 指令操作码的扩展
2.1 为什么需要对操作码进行扩展
举个例子:
某机器的指令长度为16位,包括4位基本操作码和三个4位地址字段。若三地址指令仅需15条,两地址指令需15条,一地址指令需15条,零地址指令需16条,共61条指令,应如何安排操作码?
在这个例子中,共有61条指令,故操作码最少需要6位(因为26=64 > 61),显然操作码不够用,因此需要对操作码进行扩展。
2.2 如何扩展
扩展原则:
①操作码位数随地址码个数变化采取可变长度的类型;
②不允许短操作码是长操作码的一部分,以保证指令间指令码 一定不重复;
其实很简单,来两个例子:
【例一】
某机器的指令长度为16位,包括4位基本操作码和三个4位地址字段。
若三地址指令仅需15条,两地址指令需15条,一地址指令需15条,零地址指令需16条,共61条指令,应如何安排操作码?
【例二】
某机器的指令长度为16位,包括4位基本操作码和三个4位地址字段。
若三地址指令仅需15条,两地址指令需14条,一地址指令需31条,零地址指令需16条,共76条指令,应如何安排操作码?