第四章:指令系统

(一)扩展操作码

操作码的位数随地址码位数的减小而增加

但需谨记两点:

(1)短操作码不能与长操作码前面部分的代码相同

【假设字长指令是16位,高四位用作指令码,剩下十二位用作地址码。

三地址码时是  2的4次方=16  但因为要求(1),故只能有15种操作指令。剩下一种用作当扩展操作码的种子。

所以当二地址指令的时候虽然操作码是8位,但指令数只有2的4=16种,若要继续扩展则需要减小。】

(2)各指令的操作码一定不能重复

【例题】

【一个计算机系统采用32位单字长指令,地址码是12位,如果定义了250条二地址指令,那么还有(24K )条单地址指令。

怎么理解,这里的地址码限定为12位,说的是一个地址码就12位,如果有2个地址,那就是24位了!我会下意识的以为,哦,只分配12位作地址码,这是不对的。

由原理分析我们知道得问自己一下,这个是不是从三地址开始扩展来的?计算一下,12*3 = 36,超过了总的位数,因此,二地址是起点。之所以这么想,是因为我们知道二地址不一定是扩展的起点。

二地址共用掉24位作操作数地址,高位有8位作操作码。共有28=25628=256种操作码状态,现在只用了250种,因此,还有6个可以供下一个扩展用,一地址码就意味着有中间12位可以做操作码,于是根据乘法原理:6∗212=24K6∗212=24K. 这里不考虑继续扩展成0地址码,因为问的是可以有,考虑的是最多可以有,是上限值。

PS: 210=1K,220=1M,230=1G210=1K,220=1M,230=1G,乘法原理就是分步用乘法,比如高位有6个状态,再第二步有212212种 ,乘起来就是结果。

---------------------

作者:QUETAL

来源:CSDN】 





(二)复杂与精简指令系统计算机

RISC:一定采用流水技术,速度快,多采用硬布线控制器,指令长度固定,种类少,寻址方式种类尽量减小,尽量简化单条指令的功能,复杂指令的功能由简单指令的组合来实现,指令功能简单,仅Load/Store指令访存。

CISC:增强指令功能。

(三)一些小Tip

(1)什么是指令?什么是指令系统?为什么要引入指令系统?

要计算机执行某种操作的命令。|所有机器指令的集合。|避免了用户与二进制代码直接接触。

(2)指令分为操作码和地址码部分。操作码给出这条指令的功能,地址码用于给出被操作数(指令或者数据)的地址,包括参加云端的一个或多个操作数所在地址,运算结果的保存地址,程序的转移地址,被调用子程序的入口地址等。

(3)对于一个指令系统,寻址方式多和少有什么影响?

寻址方式的多样化能让编程更为方便,但多重寻址方式会造成CPU结构的复杂化,也不利于指令流水线的运行,而寻址方式太少能够提高CPU的效率,但对于用户而言,会使编程方式变得复杂。

(四)寻址方式

*记住EA是有效地址,也就是用下面的方法找到的都是【地址】,即操作数的有效地址。用找到的EA再找才是操作数。

(A)表示地址为A的数值         EA=(A)代表有效地址是地址A中的数值

【指令寻址】

顺序寻址:通过PC加1,自动形成下一条指令的地址。【PC中保存的是下一条指令的地址,也就是保存在内存中的地址,故位数取决于存储器字数】

跳跃寻址:

【数据寻址】

隐含寻址:操作数地址隐含在指令中【比如累加器ACC对于单地址指令来说是隐含寻址】

立即寻址:给出的直接就是操作数【最快的方式,但是不能保证操作数的位数】

直接寻址:有效地址就是给出的地址

间接寻址:根据给出的地址找到内容,这个内容就是有效地址【易于完成子程序返回】

寄存器寻址:给出的寄存器编号就是有效地址【能够有效缩短地址中的位数,执行速度快】

寄存器间接寻址:寄存器中的内容是有效地址【扩大了寻址范围 】

相对寻址:把程序计数器PC的内容加上指令格式中的形式地址。

基址寻址:基址寄存器中的内容加上指令格式中的形式地址

变址寻址:变址寻址器中的内容加上指令格式中的形式地址

堆栈寻址:pop  push

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容