计组第四章:指令系统

指令格式

指令(又称机器指令):
是指示计算机执行某种操作的命令,是计算机运行的最小功能单位。
一台计算机的所有指令的集合构成该机的指令系统,也称为指令集

注:一台计算机只能执行自己指令系统中的指令,不能执行其他系统的指令。(如x86架构、ARM架构)

一个指令分为操作码和地址码,可能包括0、1、2…个地址码(需要操作的对象数目)

1.按地址码数目分类
①零地址指令

在这里插入图片描述
不需要地址码去找操作数在哪(1.用不上操作数 2.操作数隐含在堆栈里,直接取就行)

②一地址指令

在这里插入图片描述
访存次数:访问主存的次数,访问寄存器不算在里面

③二、三地址指令

在这里插入图片描述

④四地址指令

在这里插入图片描述
比起三指令,多了个指向下一个指令的地址位

若指令总长度固定不变,则地址码数量越多,寻址能力越差(n位地址码表示2n个地址)

在这里插入图片描述

2.按指令长度分类

在这里插入图片描述

3.按操作码长度分类

在这里插入图片描述

4.按操作类型分类

看一看就行
在这里插入图片描述

小结

在这里插入图片描述

扩展操作码指令格式

定长指令字结构+可变长操作码 → 扩展操作码指令格式
在这里插入图片描述
设计扩展操作码指令格式,有两个约束:

1)不允许短码是长码的前缀,即短操作码不能与长操作码的前面部分的代码相同。(系统通过识别前缀来判断是几地址,1111就是三地址,1111 1111就是二地址,所以不能重复)

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

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

在这里插入图片描述

在这里插入图片描述
定长操作码:用n位表示2n条指令,所以指令数量增多时占的位数要增加,有利于译码和识别

扩展操作码(不定长操作码):可以灵活设计指令,指令字长有限的情况下能保持指令种类丰富(多占几位就行了),但是译码和分析比较困难,设计比较复杂

指令寻址

1.顺序寻址

在这里插入图片描述

在这里插入图片描述
顺序寻址 : ( PC ) + “1” → PC
这里的1 理解为1个指令字长,实际加的值会因指令长度、编址方式而不同

2.跳跃寻址

在这里插入图片描述
取出3里的指令之后,PC还是会自动+1变成4(指向下一条指令),然后执行3的指令把PC的值改成7

小结

在这里插入图片描述

数据寻址

数据寻址:确定本条指令的地址码指明的真实地址

比如一个程序里一条指令是JMP 7,但是程序的起始位置在主存的100(应该跳到107才对),这个时候就需要数据寻址来确定地址码指明的真实地址。(实际就是逻辑地址和物理地址的转换,程序员写的时候都是逻辑地址

一共有10种寻址方式,用0000 ~ 1001来表示

以前的操作码 + 地址码变成这样:
在这里插入图片描述

1.直接寻址

在这里插入图片描述

2.间接寻址

在这里插入图片描述
A里面放的是EA,再找到EA取出操作数(也有可能是多次访存)

优点:
可扩大寻址范围(有效地址EA的位数大于形式地址A的位数)。便于编制程序(用间接寻址可以方便地完成子程序返回)。

缺点:
指令在执行阶段要多次访存(一次间址需两次访存,多次寻址需根据存储字的最高位确定几次访存)。

3.寄存器寻址

在这里插入图片描述
给出寄存器编号,去寄存器里取操作数

4.寄存器间接寻址

在这里插入图片描述

5.隐含寻址

在这里插入图片描述

6.立即寻址

在这里插入图片描述
加个#,表示里面存放的直接是操作数

小结

在这里插入图片描述

7.偏移寻址
①基址寻址

在这里插入图片描述
如果用通用寄存器要指明是哪个,BR加上A就可以得到EA,移动程序的话修改BR里的内容就可以了
在这里插入图片描述
在这里插入图片描述
基址寻址便于程序在内存里动来动去(只需修改基址就可以不影响程序的运行)

②变址寻址

在这里插入图片描述
在这里插入图片描述
IX作为偏移量的解释

变址寄存器的内容可由用户改变

变址寻址方便用来实现循环程序(内部的移动)
在这里插入图片描述
这两个复合使用,来实现程序又要浮动,同时要实现循环

③相对寻址

在这里插入图片描述
放在指令里的A就是位移量,可正可负(用补码表示),取出这个指令后PC会指向下一个指令,然后在此基础上位移(按照A来),找到真实地址EA

在这里插入图片描述
挪移代码位置之后,
本来跳转到2,采用相对寻址之后,在A里放-4(补码表示),PC变成M+4之后因为这个-4再改成M,这样就读取M里的指令了(这样就不用费心思去想跳转指令究竟跳到哪,只需要根据一个相对位置就可以调整)

相对寻址广泛应用于转移指令。跳转指令和目标总是差一个固定值的时候这样做方便整个程序的浮动(不用修改具体是多少,只需要写上固定值就可以)

小结

在这里插入图片描述

8.堆栈寻址

在这里插入图片描述
这个就不用操作数地址了,只需要一个堆栈指针(SP),每次修改一手SP,出栈入栈,再把结果压回堆栈。

在这里插入图片描述
硬堆栈就是真的一个个的寄存器,软堆栈就是用主存实现的堆栈(不够快但是便宜)

小结

在这里插入图片描述

CISC、RISC

complex,CISC肯定复杂
reduced,RISC精简
在这里插入图片描述
在这里插入图片描述
CISC难以优化,RISC可以优化:好比CISC已经是写好的函数,RISC是一条条语句,语句更好优化,函数已经写好了不好整了。

RISC里只有Load、Store可以访存(其他语句想要访存要搭配这两个),所以看到比如乘法指令访存了就知道是CISC

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值