计算机指令格式

计算机是通过执行指令来处理各种数据的。为了指出数据的来源、操作结果的去向及所执行的操作,一条指令必须包含下列信息:


(1)操作码(OP),具体说明了操作的性质及功能

(2)第一操作数的地址 A1


(3)第二操作数的地址 A2


(4)操作结果存放地址 A3


(5)下一条将要执行指令的地址 A4



由上可得,一条指令包括两种信息:

操作码

地址码

此外补充一下其他知识:

字长:计算机在单位时间内(同一时间)能一次处理一组二进制数的位数,决定了计算机的运算精度和一次处理能力。其中包含了CPU、寄存器、Data bus等能够一次传输数据的能力


字节:1Byte=8bit


地址码长度(操作数):地址码的位数,存储器可以按字长存储单元或字节存储单元编址,地址码的位数可以寻2^N

个存储单元地址。所以地址码长度决定了指令的直接寻址能力。


指令长度:操作码长度+操作数地址码长度+操作数地址个数。指令长度和字长没有固定的联系


一、定长编码指令格式

这是最简单的一种编码方法。操作码字段的位数和位置固定,为能够表示整个指令系统中的全部指令,指令的操作码字段应当具有足够的位数。

设指令系统共有m条指令,指令中操作码字段的位数为N位,则满足

m<= 2^N

计算机指令格式

上图为IBM370机的指令格式

二、变长编码指令格式

变长编码的操作码字段位数是不固定的,且分散地放在指令字的不同位置上。

计算机指令格式

上图为PDP-11机的指令格式图(PPT里截的图)

_____________________________________________________________________________

下面放一道例题来熟悉一下这两种编码方式的应用


例:设某计算机字长16位,欲使设计的指令系统有零地址指令16条,一地址指令有15条,二地址指令有15条,三地址指令有15条,设每个地址码字段为4位,应如何设计?


解法一、定长操作码解法


共需要满足15+15+15+16=61条指令


由2^6=64>61


所以操作码长度为6位

零地址指令长度6位

一地址指令长度10位

二地址指令长度14位

三地址指令长度18位


若要求指令字长为字节的整数倍,则

零地址指令长度8位

一地址指令长度16位

二地址指令长度16位

三地址指令长度24位


解法二、操作码扩展技术解法


2^4=16>15

计算机指令格式

指令格式为

各个字段均为4位,指令长度16位。

(1)把4位操作码的编码0000~1110作为15条三地址指令的操作码,1111作为扩展窗口把操作码扩展到 A1。


(2)8位操作码编码1111 0000~1111 1110作为15条二地址指令,1111 1111作为扩展窗口把操作码扩展到 A2。


(3)12位操作码编码1111 1111 0000~1111 1111 1110作为15条一地址指令,1111 1111 1111作为扩展窗口把操作码扩展到 A3 。


(4)最后16位操作码编码1111 1111 1111 0000~1111 1111 1111 1111作为16条零地址指令。


PS:操作码扩展法即在4位二进制表示的16个码点中,用前15个(0000开始到1110)来表示最常用指令的操作码,剩余的一个码字(1111)作为扩展窗口把操作码扩展到下一个4位。下一个4位表示的16个码字按照同样的原则处理和扩展。

上一篇:一份程序猿单词列表(updating)


下一篇:物联网NB-IoT技术商用正全面铺开 竞争日趋激烈