扩展操作码
指令格式:定长指令字结构+可变长操作码。
设计操作码指令格式时,必须关注:
- 不允许短码是长码的前缀,就是短的操作码不能与长的操作码的前面部分的代码相同。
数据结构:哈夫曼树是一个左子节点永远小于右子节点的二叉树,哈夫曼编码是一种数据压缩手段,该原理就是:
- 假设向左节点为1,则向右节点为0(可以互反);
- 叶子节点的值表示操作码出现的次数;
- 从根节点到每个叶子节点的由0和1组成该操作码字长
- 计算WPL(树的带权路径长度),即 所有操作码的字长 * 节点值。
- 每个指令的操作码绝不能相同。
总结:对于使用频率高的操作码,分配较短的操作码;反之亦然。
扩张操作码的案例说明
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 **种状态。
标签:11,扩展,地址,操作码,指令,字长,节点 From: https://www.cnblogs.com/container-simple/p/17444726.html