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

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

扩展操作码


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


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条指令。


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


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


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


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


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


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


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


相关文章
|
6月前
8051指令系统
8051指令系统
25 1
|
6月前
|
编译器 C++
C/C++中的逻辑运算与汇编指令的交互
C/C++中的逻辑运算与汇编指令的交互
42 0
|
存储 编译器 C语言
5.6 汇编语言:汇编高效数组寻址
数组和指针都是用来处理内存地址的操作,二者在C语言中可以互换使用。数组是相同数据类型的一组集合,这些数据在内存中是连续存储的,在C语言中可以定义一维、二维、甚至多维数组。多维数组在内存中也是连续存储的,只是数据的组织方式不同。在汇编语言中,实现多维数组的寻址方式相对于C语言来说稍显复杂,但仍然可行。下面介绍一些常用的汇编语言方式来实现多维数组的寻址。
142 0
|
存储 缓存 移动开发
指令系统组成
《基础系列》
243 0
指令系统组成
|
存储
指令系统——指令寻址
指令系统——指令寻址
182 0
指令系统——指令寻址
|
存储
指令系统——指令格式
指令系统——指令格式
371 0
指令系统——指令格式
|
存储
指令系统——数据寻址
指令系统——数据寻址
191 0
指令系统——数据寻址
|
机器学习/深度学习
汇编语言之寄存器(CPU工作原理)(2)
汇编语言之寄存器(CPU工作原理)(2)
158 0
汇编语言之寄存器(CPU工作原理)(2)
|
存储
汇编语言之寄存器(CPU工作原理)(1)
汇编语言之寄存器(CPU工作原理)(1)
278 0
汇编语言之寄存器(CPU工作原理)(1)
汇编语言之寻址方式
汇编语言之寻址方式
155 0