指令系统——扩展操作码指令格式

简介: 指令系统——扩展操作码指令格式

扩展操作码


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


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


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


  • 变长指令字结构:指令系统中各种指令的长度不等


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


  • 可变长操作码:指令系统中各指令的操作码长度可变


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


扩展操作码举例


这只是一种设计方法:



设计扩展操作码需注意:


  1. 不允许短码是长码的前缀,即短操作码不能与长操作码的前面部分的代码相同。(对比哈夫曼树“前缀编码”)


  1. 各指令的操作码一定不能重复。


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


设计扩展操作码例题:


设指令字长固定为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种



指令操作码


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


操作码是识别指令、了解指令功能与区分操作数地址内容的组成和使用方法等的关键信息。


例如,指出是算术加运算,还是减运算;是程序转移,还是返回操作。


操作码分类:


定长操作码:


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


  • 一般n位操作码字段的指令系统最大能够表示2n条指令。


  • 优:定长操作码对于简化计算机硬件设计,提高指令译码和识别速度很有利;


  • 缺:指令数量增加时会占用更多固定位,留给表示操作数地址的位数受限。


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


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


  • 最常见的变长操作码方法是扩展操作码,使操作码的长度随地址码的减少而增加,不同地址数的指令可以具有不同长度的操作码,从而在满足需要的前提下,有效地缩短指令字长。


  • 优: 在指令字长有限的前提下仍保持比较丰富的指令种类;


  • 缺 :增加了指令译码和分析的难度,使控制器的设计复杂化。


相关文章
|
敏捷开发 监控 数据可视化
一文带你了解:六款适合PC端的工时管理工具
在项目管理中,工时管理软件能实时反映项目各任务的进展情况。管理者可以通过查看员工在每个任务上的工时投入,判断任务是否按计划推进。若发现某个任务工时投入远超预期但进度缓慢,就可以及时介入调查原因,是遇到技术难题、资源不足还是人员协作问题等,进而采取相应措施加以解决,确保项目能按时交付。
|
数据安全/隐私保护
产品设计:纠正你的网站注册时[验证邮箱]的流程
1. 填写用户名、密码、重复密码、Email、……,提交;2. 收取邮件,点击激活链接;3. 进一步完善资料或使用网站。
3842 0
|
人工智能 机器人 中间件
【C++】C++回调函数基本用法(详细讲解)
【C++】C++回调函数基本用法(详细讲解)
|
开发框架 SpringCloudAlibaba Java
Spring注解装配:@Autowired和@Resource使用及原理详解
`@Resource`和`@Autowired`都是实现bean的注入,在日常开发中使用非常频繁,但是使用体验不太一样,笔者喜欢用`@Resource`,因为在使用`@Autowired`时IDEA会出现一些警告爆红提示
857 0
Spring注解装配:@Autowired和@Resource使用及原理详解
|
弹性计算 网络协议 安全
阿里云服务器80端口开启教程(安全组配置)
阿里云服务器80端口开启教程(安全组配置)阿里云服务器端口怎么打开?云服务器ECS端口在安全组中开启,轻量应用服务器端口在防火墙中打开,阿里云服务器网以80端口为例,来详细说下阿里云服务器端口开放图文教程,其他的端口如8080、3306、443、1433也是同样的方法进行开启端口:
3476 0
Github上热搜的Java开源商城项目合集,这个是真的好
今天GitHub热榜上又有一个项目成功引起了我的注意——mall-swarm
|
存储
小数在内存中是如何存储的?
小数在内存中是如何存储的?
1069 0
|
程序员 编译器
静态分配和动态分配之间的区别是什么
【9月更文挑战第1天】静态分配和动态分配之间的区别是什么
1862 0

热门文章

最新文章