扩展操作码
扩展操作码
指令格式:定长指令字结构+可变长操作码。
设计操作码指令格式时,必须关注:
- 不允许短码是长码的前缀,就是短的操作码不能与长的操作码的前面部分的代码相同。
数据结构:哈夫曼树是一个左子节点永远小于右子节点的二叉树,哈夫曼编码是一种数据压缩手段,该原理就是:
- 假设向左节点为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 **种状态。
比任何人都要努力
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~