操作码

2018-1-4

在计算机中,指令是由操作码与地址码两部分组成的。
操作码用来指明指令所要完成的操作。通常其位数反映了机器的操作种类。
操作码的位数可以是固定的也可以是变化的。通常采用扩展操作码技术,使操作码的位数随着地址码的减少而增加。先列举一个扩展操作码的方法吧!
首先,假设指令字长为16位,其中4位为基本操作码OP,还有三个作为4位长的地址字段。假设我们是三地址指令,那么如果使用全部的4位基本操作码,那么一共有16条指令。若采用扩展操作码技术:
当操作码取4位的时候,三地址指令最多有15条(第16条借给二地址指令);
当操作码取8位的时候,二地址指令最多有15条(第16条借给一地址指令);
当操作码取12位的时候,一地址指令最多有15条(第16条借给零地址指令);
当操作码取16位的时候,二地址指令最多有16条。

说两个题目吧!
1.假设指令字长为16位,操作数的地址码为6位,指令有零地址,一地址,二地址三种格式。
(1)假设操作码固定,若零地址指令有P种,一地址指令有Q种,则二地址指令最多有多少种?
(这里的P和Q只是针对前四位操作数而言的,其中每一种都会有好多条……对于某一种指令而言,只是这其中的地址码不同而已)
操作数的地址码为6位,对于二地址指令而言,操作码的位数为16-6-6=4位,一共有2^4=16种指令,由于操作码固定,那么二地址指令共有16-P-Q种。
(2)采用扩展操作码技术,若二地址指令有X种,零地址指令有Y种,则一地址指令最多有几种?
对于二地址指令来说,一共最多有2^4种指令,每少掉一个二地址指令,我们就为一地址指令增加了2^6种可能;以此类推,每少掉一个一地址指令,我们就为零地址指令增加了2^6种可能,那么我们可以得到:
Y=((2^4-X)*2^6-M)*2^6
那么我们可以得到M=(2^4-X)*2^6-Y*2^(-6)

2.某机器字长为32位,指令单字长,指令系统中有零地址,一地址,二地址三种格式。已知每个地址长12位,采用扩展操作码方式,问该指令系统的零地址,一地址,二地址指令最多有多少条?
(1)二地址指令:操作码的位数为32-12-12=8位,那么指令最多有2^8-1条。
(2)一地址指令:他的条数与二地址指令的条数有关,由于此题让我们求出最大的。那么我们可以假设二地址指令只有一条,那么我们可以得出指令最多有(2^8-1)*2^12-1条。
(3)零地址指令:那么我们可以假设一地址指令只有一条,那么我们可以得出指令最多有((2^8-1)*2^12-1)*2^12=2^32-2^24-2^12条。

当然,扩展操作码的情况是有多种的,这里我们只是说了这几种而已……

你可能感兴趣的:(计算机组成原理)