指令格式
指令格式
在计算机内部,指令是若干位的二进制位串。这个位串划分成几个字段,字段的结构和组合形式称为指令格式。根据前面所述机器指令所需的信息,指令的基本格式可表示为:
操作码用来指明cpu执行什么操作。
地址码用来指出操作数从哪里来,结果送往哪里去以及下一条指令从哪里取。
指令格式的设计是一个比较复杂且技巧性较强的问题,一般涉及指令字长度、操作码结构和地址码结构三个问题。
指令字长度
指令字长度是指一条指令中所包含的二进制代码的位数,是指令格式设计的最基本出发点。
指令字长度的确定受存储器尺寸、存储器组织、总线结构、CPU复杂程度和CPU速度等因素的相互影响。
在一个指令系统中,若所有指令的长度都是相等的,称为定长指令字结构。若各种指令的长度随指令功能而异,则称为变长指令字结构。现代计算机广泛采用变长指令字结构,指令的长度能短则短,需长则长。
指令的操作码
操作码用来指明指令完成什么操作,不同的指令用操作码字段的不同编码来表示,每一种编码代表一种指令。CPU中有专门的译码电路用以识别解释每个操作码,因此计算机就能执行操作码所表示的操作。
操作码的编码方式有两种:定长操作码和变长/扩展操作码。
定长操作码是指操作码的长度固定,且集中放在指令字的一个字段中。其优点是:简化译码逻辑,减少指令译码时间,便于扩充操作种类。这种格式在字长较长的大中型计算机中广泛使用。
变长/扩展操作码是指操作码的长度可变,且分散地放在指令字的不同字段。其优点是:缩短指令字长,减少程序的总位数,节省存储空间。在字长较短的微型计算机和小型计算机中广泛采用。
指令的地址码
地址码用来指出操作数的地址。可以指定:源操作数地址、结果(目的)操作数地址、下一条指令的地址,这些地址可以是:内存地址、CPU中的寄存器地址、I/O设备地址。
根据操作数地址的数目可分为:四地址指令、三地址指令、二地址指令、一地址指令和零地址指令。
1. 四地址指令:
格式
功能: (A1)OP(A2)→A3
A4=下条将要执行指令的地址
其中:Ai表示地址,(Ai)表示存放于该地址中的内容。
3. 三地址指令:
功能: (A1)OP(A2)→A3
(PC)+1→PC
4. 二地址指令:
功能: (A1)OP(A2)→A1
(PC)+1→PC
其中:A1为目的操作数地址,A2为源操作数地址。
5. 一地址指令:
功能: OP(A1)→A1 (单操作数指令)
(Acc)OP(A1)→Acc
(PC)+1→PC
6.零地址指令:
零地址指令中只有操作码没有地址码。通常,用来表示不需要地址码或者有一个或两个隐含地址的指令。
指令格式举例
下图是PDP-11中典型的指令格式,采用的就是扩展操作码技术。
