赞
踩
可变长度操作码(扩展操作码)
含义:当指令中的地址部分位数较多时,让操作码的位数少些;当指令中的地址部分位数减少时(如:现在是一地址指令,因而地址位数相应减少),可让操作码的位数增多,以增加指令种类。这称为扩展操作码。
例、假设某指令系统的指令字长是 16 位,最多给出三个地址段 X、Y、Z,每个地址字段占 4 位。试给出一种扩展操作码的方案。
下图给出一种扩展操作码的原理性方案:
分析:
对于三地址指令,三个地址占 12 位;操作码 4 位,全部用来表示操作功能,可以表示 2^4=16 种。现在只取其中的 15 种组合0000~1110,分别表示 15 条三地址指令,留下1111作为扩展操作码标志。
对于二地址指令,两个地址占 8 位;在高4位(第15~12位)为1111的扩展标志指示下,将第11~8位扩展为操作码;如果取其中 15 种表示二地址指令,即11110000~11111110,则留下11111111作为扩展操作码标志。
对于一地址指令,一个地址占 4 位;又可将第7~4位扩展为操作码。如果取其中 15 种表示一地址指令,即111111110000~111111111110,则留下111111111111作为扩展操作码标志。
对于零地址指令,在第15~4位为全1的扩展标志指示下,可有 16 种零地址操作码。
以上只是其中一种设计方案。
实际上,我们需要根据三、二、一、零地址指令的需求量来进行设计。假设二地址指令只需要 14 条,那么我们可以再得到一种扩展标志,用于一地址指令的扩展。
下图给出一种扩展操作码的原理性方案:
分析:
对于二地址指令,两个地址占 8 位;在高4位(第15~12位)为1111的扩展标志指示下,将第11~8位扩展为操作码;如果取其中 14 种表示二地址指令,即11110000~11111101,则留下11111110、11111111作为扩展操作码标志。
对于一地址指令,一个地址占 4 位;又可将第7~4位扩展为操作码。由于在设计二地址指令时留下了两种扩展标志,加上第7~4位的编码,可得到 2X2^4=32 种组合。如果只取其中 31 种表示一地址指令,即111111100000~111111111110,则留下111111111111作为扩展操作码标志。
“在本例中,我们有意为二地址指令只留下1种扩展标志,相应地只有15条三地址指令;而为单地址指令留下2种扩展标志,相应地只有14条二地址指令,而单地址指令可有31条。”
关于 2X2^4=32 的得来:
第一个 2 是两个扩展标志的 2,后面的 2^4 是指,我们加上第7~4位(一共4位)作为操作码,那么将会得到 2^4 种组合。根据乘法原理,我们的操作码组合将会有 2X2^4=32 种。
作业题
题1、一个计算机系统采用 32 位单字长指令,地址码为 12 位,如果定义了 250 条二地址指令,那么单地址指令的条数最多有( 24K )。
题2、某指令字长 12 位,每个地址字段 4 位,若要求有 12 条双操作数指令,问单操作数一地址指令最多可有多少条?
答:最多有 64 条。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。