可变长度操作码(扩展操作码)

可变长度操作码(扩展操作码)

含义:当指令中的地址部分位数较多时,让操作码的位数少些;当指令中的地址部分位数减少时(如:现在是一地址指令,因而地址位数相应减少),可让操作码的位数增多,以增加指令种类。这称为扩展操作码。

例、假设某指令系统的指令字长是 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 )。

  • 地址码为 12 位,是指每一个地址占 12 位
  • 250 为 0 ~ 249,而 249 = 128 + 64 + 32 + 16 + 8 + 1
  • 对于一地址指令,有 12 位扩展成为操作码部分

题2、某指令字长 12 位,每个地址字段 4 位,若要求有 12 条双操作数指令,问单操作数一地址指令最多可有多少条?  

答:最多有 64 条。

  • 27
    点赞
  • 133
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值