精华内容
下载资源
问答
  • 扩展操作码

    千次阅读 多人点赞 2018-01-24 09:20:33
    需要建立的一种直观的认知是:既然是扩展操作码,就意味着操作码的位数越变越多!  之所以这么强调,是因为常常混淆了操作码的扩展方向。 再看扩展的原理:  假设指令字长是16位,平均劈开成4份,高位4位用作操作...

    需要建立的一种直观的认知是:既然是扩展操作码,就意味着操作码的位数越变越多! 
    之所以这么强调,是因为常常混淆了操作码的扩展方向。

    再看扩展的原理: 
    假设指令字长是16位,平均劈开成4份,高位4位用作操作码,低12位分别用作三个地址码。

    那么操作码的个数就是四个二进制所能表达的离散数目: 24=16

    OK,如果地址码只能做地址码,这是最终的结局了。 
    但是,如果地址码可以化身为操作码,这并不难对吧,毕竟都是二进制的数位而已。 
    非常粗略的认为,现在第一个地址4位也用作操作码,那么总的看来就是高8位用作操作码,低8位用作两个地址码了。

    按理说 28=256 ,即,共计有256种操作码。 
    虽然,用8位和用4位各自表达操作码,互不干扰的。但是,实际上呢,单操作码只有15条,且二地址的操作码只有16条,如果还要继续扩展,二地址的也只有15条了! 
    为什么差别这么大? 
    答案是两个原则不可以破:

    1. 不允许短码是长码的前缀
    2. 各指令的操作码一定不能重复

    为了满足第一条,我们看8位操作码的时候,前面四位全是四位操作码已经出现过的! 
    所以,设计思路只能变成:前面四位只用15种离散状态,保留一个给二地址扩展用。因此,8位操作码,实际上限定了高4位的值,只是低四位可以离散,共16种状态,要想再继续扩展,自己最多只敢用15种,还得保留一个种子呢!

    这便是整个的扩展操作码的原理。当然可以有其他变种,这里不做展开。

    看一个例子:

    一个计算机系统采用32位单字长指令,地址码是12位,如果定义了250条二地址指令,那么还有(24K )条单地址指令。

    怎么理解,这里的地址码限定为12位,说的是一个地址码就12位,如果有2个地址,那就是24位了!我会下意识的以为,哦,只分配12位作地址码,这是不对的。

    由原理分析我们知道得问自己一下,这个是不是从三地址开始扩展来的?计算一下,12*3 = 36,超过了总的位数,因此,二地址是起点。之所以这么想,是因为我们知道二地址不一定是扩展的起点。 
    二地址共用掉24位作操作数地址,高位有8位作操作码。共有 28=256 种操作码状态,现在只用了250种,因此,还有6个可以供下一个扩展用,一地址码就意味着有中间12位可以做操作码,于是根据乘法原理: 6212=24K . 这里不考虑继续扩展成0地址码,因为问的是可以有,考虑的是最多可以有,是上限值。

    题一:某计算机指令字长为16位,指令有双操作数、单操作数和无操作数3种格式,每个操作数字段均用6位二进制表示,该指令系统共有m条(m<16)双操作数指令,并存在无操作数指令。若采用扩展操作码技术,那么最多还可设计出()条单操作数指令。
        A.2^6                          B.(2^4-m)*(2^6)-1
        C.(2^4-m)*2^6            D.(2^4-m)*(2^6-1)

    答案选B
    分析:
        对于双操作数指令而言,两个长度为6位的操作数共占了12位,剩余的4位用作操作码,所以可以设计出2的四次方个双操作数指令。系统中已经设计出了m条双操作数指令,那么剩余的2^4-m条可以用于设计单操作数的操作码。对于单操作数指令而言,它的操作码长度为16-6=10位。题目中要求使用扩展操作码技术,所以单操作数指令在原来的双操作数指令的4位操作码上可以扩展10-4=6位,所以最多可以设计出(2^4-m)*(2^6)-1条单操作数的指令。减去1的原因是“存在无操作数指令”,所以至少留下一个用来扩展无操作数指令。
     题二:指令字长为16位,采用扩展操作码技术,要求形成15条三地址指令、12条二地址指令、31条一地址指令和16条零地址指令。
    三地址:(15条)
    0000 **** **** ****
    ... ... ... ...
    1110 **** **** ****
    二地址:(12条)
    1111 0000 **** ****
    ... ... ... ...
    1111 1011 **** ****
    一地址:(31条)
    1111 1100 0000 ****
    ... ... ... ...
    1111 1101 1110 ****
    零地址:(16条)
    1111 1101 1111 0000
    ... ... ... ...
    1111 1101 1111 1111

    如果是给定指令字长,再给你一些需求,如何设计满足需求的指令格式? 
    光说没用,以实例求证。

    假设指令字长是16位,操作数的地址码是6位,指令有0地址,一地址,二地址三种。

    第一道

    1)设固定操作码,若0地址指令有M种,一地址指令有N种,则二地址指令最多多少种?

    解析:这个题只需要贯通固定的含义即可:无论是0地址还是1地址,亦或者是2地址,操作码位数都固定着,虽然很少,也不必介怀。因此,计算固定操作码的位数,就由最多的地址码位数决定。即:二地址时,地址码位数12位,那么只给操作码留下4位,共16种离散状态。也即二地址指令只有:16-M-N种.

    第二道

    采用扩展操作码技术,二地址指令最多有多少种?

    解析:一般情况下,我们由多地址指令反向推导少地址指令,也即,按照扩展的思路进行,现在是反向考察,自然心里上就有一些抵触。 
    但是,我们不妨仍从正向角度出发:即,设二地址最多是X种,作为一个变量。那么我们知道二地址的时候,留给操作码的位数是4位,最多的离散状态是16种,现在二地址指令是X种,不能用光了16种状态,所以, X<16 。 
    再去扩展一地址指令:二地址留下16-X种作为扩展的种子。到这里,突然间发现,不必再往下看了,既然M,N都只是变量而已,根本不能对X形成什么约束,X的约束只是来自于:要留至少一个状态作为一地址的扩展。

    于是:X最牛可以是15。就这样。

    第三道

    采用扩展码技术,若二地址指令有P条,0地址指令有Q条,则一地址指令最多几条?

    解析:现在我们知道,解题的角度还是从最少的操作码开始推算:二地址留给操作码的位数是4位,共16种离散状态,也即最多16条,现在有P条指令,意味着16-P个状态用作扩展一地址指令了。 
    具体16-P要乘以什么呢,得由0地址推导得来。

    0地址指令低6位共64种状态,设一地址留了X个状态用于0地址扩展,那么0地址共有64X = Q种。推导出 X=Q/64

    因此一地址指令数目  R+X=(16P)64

    ==> R=(16P)64Q/64

    也即:中间6位共64种状态有(16-P)*64 - Q/64用来做一地址自身了,于是一地址共有:(16-P)*64-Q/64种。

    这里说最多,是因为,一地址指令可以设计的比这小,虽然理论上可以这么多。

    以上。


    PS:  210=1K,220=1M,230=1G ,乘法原理就是分步用乘法,比如高位有6个状态,再第二步有 212 种 ,乘起来就是结果。

    以上。

    展开全文
  • 扩展操作码的总结

    万次阅读 多人点赞 2016-10-01 13:51:55
    需要建立的一种直观的认知是:既然是扩展操作码,就意味着操作码的位数越变越多! 之所以这么强调,是因为常常混淆了操作码的扩展方向。再看扩展的原理: 假设指令字长是16位,平均劈开成4份,高位4位用作操作码,...

    需要建立的一种直观的认知是:既然是扩展操作码,就意味着操作码的位数越变越多!
    之所以这么强调,是因为常常混淆了操作码的扩展方向。

    再看扩展的原理:
    假设指令字长是16位,平均劈开成4份,高位4位用作操作码,低12位分别用作三个地址码。

    那么操作码的个数就是四个二进制所能表达的离散数目: 24=16

    OK,如果地址码只能做地址码,这是最终的结局了。
    但是,如果地址码可以化身为操作码,这并不难对吧,毕竟都是二进制的数位而已。
    非常粗略的认为,现在第一个地址4位也用作操作码,那么总的看来就是高8位用作操作码,低8位用作两个地址码了。

    按理说 28=256 ,即,共计有256种操作码。
    虽然,用8位和用4位各自表达操作码,互不干扰的。但是,实际上呢,单操作码只有15条,且二地址的操作码只有16条,如果还要继续扩展,二地址的也只有15条了!
    为什么差别这么大?
    答案是两个原则不可以破:

    1. 不允许短码是长码的前缀
    2. 各指令的操作码一定不能重复

    为了满足第一条,我们看8位操作码的时候,前面四位全是四位操作码已经出现过的!
    所以,设计思路只能变成:前面四位只用15种离散状态,保留一个给二地址扩展用。因此,8位操作码,实际上限定了高4位的值,只是低四位可以离散,共16种状态,要想再继续扩展,自己最多只敢用15种,还得保留一个种子呢!

    这便是整个的扩展操作码的原理。当然可以有其他变种,这里不做展开。

    看一个例子:

    一个计算机系统采用32位单字长指令,地址码是12位,如果定义了250条二地址指令,那么还有(24K )条单地址指令。

    怎么理解,这里的地址码限定为12位,说的是一个地址码就12位,如果有2个地址,那就是24位了!我会下意识的以为,哦,只分配12位作地址码,这是不对的。

    由原理分析我们知道得问自己一下,这个是不是从三地址开始扩展来的?计算一下,12*3 = 36,超过了总的位数,因此,二地址是起点。之所以这么想,是因为我们知道二地址不一定是扩展的起点。
    二地址共用掉24位作操作数地址,高位有8位作操作码。共有 28=256 种操作码状态,现在只用了250种,因此,还有6个可以供下一个扩展用,一地址码就意味着有中间12位可以做操作码,于是根据乘法原理: 6212=24K . 这里不考虑继续扩展成0地址码,因为问的是可以有,考虑的是最多可以有,是上限值。

    PS: 210=1K,220=1M,230=1G ,乘法原理就是分步用乘法,比如高位有6个状态,再第二步有 212 种 ,乘起来就是结果。

    以上。

    展开全文
  • 扩展操作码的C实现,实现16位的扩展操作码的分配,分别为3,2,1,0地址指令描述
  • 计算机组成原理:扩展操作码技术

    千次阅读 多人点赞 2020-04-09 15:10:37
    今天有个好友问我一道《计算机组成原理》(唐朔飞) 中的例题,是关于扩展操作码的,为了让自己理解更加深刻一点,就写了这篇博客. 首先看看什么是扩展操作码技术: 当采用统一操作码,指令长度与各类指令的地址长度发生...

    今天有个好友问我一道《计算机组成原理》(唐朔飞) 中的例题,是关于扩展操作码的,为了让自己理解更加深刻一点,就写了这篇博客.

    首先看看什么是扩展操作码技术:

    当采用统一操作码,指令长度与各类指令的地址长度发生矛盾时,通常采用“扩展操作码”技术加以解决。 扩展操作码是一种指令优化技术即让操作码的长度随地址数的减  少而增加(即扩展)。根据不同的地址指令格式,如三地址、二地址、单地址指令等,操作码的位数可以有不同的选择,从而在满足需要的前提下有效地缩短了指令长度

    问题:(书本302页的例7.2)

           假设指令字长为16位,操作数的地址码为6位,指令有零地址、一地址、二地址三种格式.采用扩展操作码技术,若二地址指令有X种,零地址指令有Y种,则一地址指令最多有几种?

     书上给出的解答是: 采用扩展操作码技术,操作码位数可变,则二地址、一地址和零地址的操作码长度分别为4位、10位和16位.可见二地址指令操作码每减少一种,就可多构成2^6种一地址指令操作码;一地址指令操作码每减少一种,就可多构成2^6种零地址指令操作码.好友对于划线处不太理解,我个人的解释为:减少一条二地址指令,就是将一个特定的4位操作码变为一地址指令,地址就是6位,还有10位,除去特定的4位,还有10-4位可以任意组合,所以就是2^6种,零地址也是一样.

    所以一地址指令最多有 ( 2^4 - X ) * 2^6 种,设一地址指令有M种,则零地址指令最多有 [ ( 2^4 - X ) * 2^6 - M ] * 2^6 种.根据题中给出零地址有Y种,即Y = [ ( 2^4 - X ) * 2^6 - M ] * 2^6 ,则一地址指令M = ( 2^4 - X ) * 2^6 - Y * 2^6

     

    附加一道题帮助理解吧!这道题是教我们这门课的林楠老师的PPT上的一道例题.

    某指令系统,指令字长为16位,地址码长度为4位,试提出一种分配方案,使该指令系统有15条三地址指令,14条两地址指令,31条单地址指令,并留有表示零地址指令的可能。

    展开全文
  • 第11章 扩展操作码技术.ppt
  • 指令系统——扩展操作码指令格式

    千次阅读 2021-05-14 21:37:36
    文章目录扩展操作码扩展操作码举例设计扩展操作码需注意:设计扩展操作码例题:指令操作码操作码分类:定长操作码:扩展操作码(不定长操作码) : 扩展操作码 指令由操作码和若干个地址码组成。 PS:先回顾一下指令字...

    扩展操作码

    指令由操作码和若干个地址码组成。

    PS:先回顾一下指令字结构与操作码的概念:

    • 定长指令字结构:指令系统中所有指令的长度都相等
    • 变长指令字结构:指令系统中各种指令的长度不等

    • 定长操作码:指令系统中所有指令的操作码长度都相同
    • 可变长操作码:指令系统中各指令的操作码长度可变

    定长指令字结构+可变长操作码 → 扩展操作码指令格式(即不同地址数的指令使用不同长度的操作码

    扩展操作码举例

    这只是一种设计方法:
    在这里插入图片描述

    设计扩展操作码需注意:

    1. 不允许短码是长码的前缀,即短操作码不能与长操作码的前面部分的代码相同。(对比哈夫曼树“前缀编码”
    2. 各指令的操作码一定不能重复。

    通常情况下,对使用频率较高的指令,分配较短的操作码;对使用频率较低的指令,分配较长的操作码,从而尽可能减少指令译码和分析的时间。

    设计扩展操作码例题:

    设指令字长固定为16位,试设计一套指令系统满足:
    a) 有15条三地址指令
    b) 有12条二地址指令
    c) 有62条一地址指令
    d) 有32条零地址指令

    设地址长度为n,上一层留出m种状态,下一层可扩展出m×2!种状态

    解:
    a) 共24=16种状态
    留出16-15=1种

    b) 共1 ×24=16种
    留出16-12=4种

    c) 共4 ×24=64种
    留出64-62=2种

    d) 共2 ×24=32种

    0000 -1110A1(取的合法范围)A2A3
    1111 XXXX XXXXXXXX11110000 -1011A1A2
    1111 11XX XXXX XXXX11111100 –1110
    1111
    0000 –1111
    0000 –1101
    A1
    1111 1111 111X XXXX111111111110 –11110000 -1111

    指令操作码

    操作码指出指令中该指令应该执行什么性质的操作和具有何种功能。

    操作码是识别指令、了解指令功能与区分操作数地址内容的组成和使用方法等的关键信息
    例如,指出是算术加运算,还是减运算;是程序转移,还是返回操作。

    操作码分类:

    定长操作码:

    在指令字的最高位部分分配固定的若干位(定长)表示操作码。

    • 一般n位操作码字段的指令系统最大能够表示2n条指令。
    • 优:定长操作码对于简化计算机硬件设计,提高指令译码和识别速度很有利; - 缺:指令数量增加时会占用更多固定位,留给表示操作数地址的位数受限。

    扩展操作码(不定长操作码) :

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

    • 最常见的变长操作码方法是扩展操作码,使操作码的长度随地址码的减少而增加,不同地址数的
      指令可以具有不同长度的操作码,从而在满足需要的前提下,有效地缩短指令字长。
    • 优: 在指令字长有限的前提下仍保持比较丰富的指令种类;
    • 缺 :增加了指令译码和分析的难度,使控制器的设计复杂化。
    展开全文
  • 扩展操作码技术

    千次阅读 2020-05-13 15:45:30
    方法一:固定操作码的设计方式 0000 XXXX YYYY ZZZZ 1111 XXXX YYYY ZZZZ 16条三地址指令 方法二: 可变操作码的设计方法 扩展方式1: 0000 XXXX YYYY ZZZZ 1110 XXXX YYYY ZZZZ 15条三地址指令 1111 0000 XXXX YYYY...
  • 计算机组成原理------扩展操作码

    千次阅读 多人点赞 2019-07-12 21:09:08
    首先,需要建立的一种直观的认知是:既然是扩展操作码,就意味着操作码的位数越变越多! 之所以这么强调,是因为常常混淆了操作码的扩展方向。 再看扩展的原理: 假设指令字长是16位,平均劈开成4份,高位4位用作...
  • 计算机组成原理(唐朔飞第二版)301页,为什么采用扩展操作码技术后,比如说四位操作码就最多只能有15条一地址指令!这么做的主要作用是什么? 这是操作码不固定的指令格式,四位是基本的操作码,还可以扩充,但是...
  • 如何设计扩展操作码--应用

    千次阅读 多人点赞 2016-10-01 14:44:04
    在下面这一篇讲过一点点基础原理。 ... 光说没用,以实例求证。 假设指令字长是16位,操作数的地址码是6位,指令有0地址,一地址,二地址三种。... 1)设固定操作码,若0地址指令有M种,一地址指令有N种,则二地址指
  • 指令操作码扩展

    万次阅读 多人点赞 2014-08-26 19:01:01
    题一 某计算机指令字长为16位,指令有双操作数、单操作数和无操作数3种格式,每个操作数字段均用6位二进制表示,该指令系统共有m条(m  A.2^6 B.(2^4-m)*(2^6)-1  C.(2^4-m)*2^6 D.(2^4-m)*(2^6-1) ...
  • 扩展操作吗方法

    2017-09-21 13:14:38
    需要建立的一种直观的认知是:既然是扩展操作码,就意味着操作码的位数越变越多!  之所以这么强调,是因为常常混淆了操作码的扩展方向。 再看扩展的原理:  假设指令字长是16位,平均劈开成4份,高位4位用作...
  • 扩展码再思考

    千次阅读 2016-12-06 16:47:48
    扩展码再思考@(组成原理)之前有总结过比较规整的...同时强调了扩展码要抓住操作码位数扩大的方向,同时是地址减少的方向。可以类比IP地址子网划分时,子网号扩大,则主机号变少。本质都是在有限字长上的二进制计算。...
  • 操作码

    万次阅读 2018-01-04 17:56:56
    操作码
  • 指令格式基本定义基本格式零地址指令一地址指令二地址指令三地址指令四地址指令操作码分类定长操作码扩展操作码(不定长操作码)操作类型寻址方式指令寻址数据寻址立即寻址间接寻址寄存器寻址寄存器间接寻址寄存器...
  • 组成原理——指令格式(操作码

    千次阅读 2020-06-15 15:54:22
    操作码 指令的操作码OP表示该...扩展操作码指令格式 即操作码的长度可变,且分散地放在指令字的不同字段中。通常是在指令字中用一一个固定长度的字段来表示基本操作码,而对于一部分不需要某 个地址码的指令,把它们
  • 指令格式之操作码地址码

    千次阅读 多人点赞 2020-04-14 06:24:21
    指令格式之操作码地址码 一、指令格式 指令:操作码字段 地址码字段 指令字(简称指令):表示一条指令的机器字。 指令格式:是指令自用二进制代码表示的结构形式,由操作码字段和地址码字段组成。 操作码字段:表征...
  • 指令操作码与地址码

    千次阅读 2019-10-01 01:08:51
    指令字(简称指令)即表示一条指令的机器字。  指令格式则是指令字用二进制代码... 指令系统的每一条指令都有一个操作码,它表示该指令应进行什么性质的操作。不同的指令用操作码字段的不同编码来表示,每一种...
  • 汇编语言指令的语法结构是操作码+操作数(也存在只有操作码没有操作数的指令)①。 操作码表示的是指令动作,操作数表示的是指令对象。操作码和操作数罗列在一起的语法,就是一个英文的指令文本。操作码是动词,...
  • (2)采用扩展操作码技术,二地址指令最多有几种?  (3)采用扩展操作码技术,若二地址指令有P条,零地址指令有Q条,则一地址指令最多有几种? 目录 第(1)问解析: 第(2)问解析: 第(3)问解析: 第(1...
  • VT100控制进行终端扩展显示

    千次阅读 2017-05-25 17:26:00
    VT100控制是用来在终端扩展显示的代码。比如果终端上任意坐标用不同的颜色显示字符。有时又称为ANSI Escape Sequence.    所有的VT100控制符是 \033打头(即ESC的ASCII)用输出字符语句来输出。可以在...
  • php安装redis扩展操作redis

    千次阅读 2018-12-02 12:07:08
    php安装redis扩展操作redis 关于redis使用终端可以使用但是浏览器页面无法使用的情况 Redis是远程的基于内存的非关系型数据库。 下载redis wget download.redis.io/releases/redis-5.0.2.tar.gz 解压 tar ...
  • 还有特别注意的是,对于老数据的迁移,记得要进行分页处理操作,不能使用可怕的"SELECT * FROM TABLE_NAME",因为你无法预测到数据量的大小,否则容易使内存爆掉。对数据进行分页处理才是最好的解决方案...
  • 一、安装php7.0 redis扩展 安装配置步骤如下: 1.root@ubuntu:/tmp# git clone -b php7 https://github.com/phpredis/phpredis.git 可能没有预先安装git,只需要按照提示安装即可。 2.root@ubuntu:/tmp# mv ...
  • 考研复习(13)-指令系统

    千次阅读 2011-11-21 08:11:00
    扩展操作码技术:使操作码的长度随地址数的减少而增加,不同地址数的指令可以具有不同长度的操作码,从而在满足需要的前提下有效的缩短指令字长。 地址码:用来指出该指令源操作数的地址,结果的地址或是下一条指令...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 554,580
精华内容 221,832
关键字:

扩展操作码