扩展操作码

扩展操作码

指令格式:定长指令字结构+可变长操作码。

设计操作码指令格式时,必须关注:

  1. 不允许短码是长码的前缀,就是短的操作码不能与长的操作码的前面部分的代码相同。

数据结构:哈夫曼树是一个左子节点永远小于右子节点的二叉树,哈夫曼编码是一种数据压缩手段,该原理就是:

  • 假设向左节点为1,则向右节点为0(可以互反);
  • 叶子节点的值表示操作码出现的次数;
  • 从根节点到每个叶子节点的由0和1组成该操作码字长
  • 计算WPL(树的带权路径长度),即 所有操作码的字长 * 节点值。
  1. 每个指令的操作码绝不能相同。

总结:对于使用频率高的操作码,分配较短的操作码;反之亦然。

扩张操作码的案例说明

a) 留一位操作码用于扩展下一个操作码

b) 前4个指令字长固定为1111,二地址表示需要占8个指令字长,则剩下4个指令字长空闲,我们需要12条,则剩下(1101~1111)扩展,这4个字符的前两个为11,无法更多表示

c) 在b)中已经固定4位,加上剩下字节的前两个都为固定11,一共6位固定,在最后4位表示地址外,只剩下6位字长表示62条

总结:CPU在寻址时,第一判断前四位是否全位1,不是则执行有15条三地址指令;如果前四位全为1,再继续判断接下来2位是否位1,不是则执行有12条二地址指令;如果前位全为1,则继续再判断第7到11位是否为1,不是则执行有62条一地址指令,最后如果前面11位都为1,则执行有32条零地址指令。

题目:设地址长度为n,上一层留出m中状态供下层扩展,下一层可扩展出**m×2^n **种状态。

posted @ 2023-05-30 22:39  郭培鑫同学  阅读(687)  评论(0编辑  收藏  举报