指令的组成和常用的寻址方式
&& 指令格式设计中的常见编码格式
目录
1.指令的基本组成
指令由操作码和地址码拼接而成,类似于:
操作码规定指令需要做的操作类型,还有对应的操作数类型
地址码字段规定操作数、寻址方式等
根据地址码的不同形式,我们可以得到零地址指令(类似停机指令之类的),一地址指令(类似无条件跳转,条件跳转等),二地址指令(类似于寄存器加法这类的,地址码指明了两个操作数的地址/或者直接就是立即数),三地址指令(这种指令的地址码指明了操作数地址A、B,还有一个结果地址C),四地址指令(地址码不仅像三地址指令一样指明两个操作数和结果存放的地址,还多加了一个下一指令的地址)
除此之外,我们还有定长操作码和扩展操作码的分别
- 所谓的定长操作码,也就是说操作码字段(OP)的位数固定,各个指令字段位数也固定。比如有32位的指令,前8位(31~24)为操作码,后12位为第一个操作数的地址(23~12),最末的12位为第二个操作数的地址(11~0)
- 扩展操作码需要在各字段预留出一定二进制编码组合作为扩展操作码的设计,也就是说,采用扩展操作码的指令格式可以在一定位数下表现更多的指令,比如同样有32位的指令,前8位的操作码字段OP为全1时(11111111)留出来作为扩展的接口,当遇到前8位为全一的情况是,计算机会继续向后读若干位m(读多少位就看这个指令集是怎么设计的了),得到位的扩展后位的操作码,地址码位数是。使用扩展操作码时,需要注意的是短的操作码不允许作为长的操作码的一部分。
- Huffman编码,数据结构知识,构造哈夫曼树。实际上,扩展操作码就是定长操作码和Huffman编码的结合