指令系统
指令格式
指令分类
-
零地址指令
只给出操作码OP,没有显式地址
-
一地址指令
- 只有目的操作数的单操作数指令
- 隐含约定目的地址的双操作数指令
-
二地址指令
常用的算数和逻辑运算指令,往往要求使用两个操作数,需要分别给出目的操作数和源操作数的地址,其中目的操作数的地址还用于保存本次的运算结果
-
三地址指令
三个地址:源操作数,目的操作数,结果,结果存在第三个地址
-
多地址指令
描述一批数据,使用多个地址来指出源数据存放的首地址
指令所包含的信息
-
操作码
说明具体操作的性质和功能
-
操作数地址
CPU通过该地址取得所需的操作数
-
操作结果的存储地址
对操作数处理产生的结果保存在改地址内
-
下一条指令的地址
指令顺序执行下一条指令地址由PC给出,当需要改变程序的运行顺序时,下一条指令的地址由指令给出
几种指令的优缺点比较
- 零地址,一地址,而地址
- 执行速度块
- 硬件实现简单
- 指令短
- 三地址,多地址
- 便于编程
- 硬件实现复杂
指令操作码的扩展技术
指令分为固定格式和可变格式两种,RISC指令集使用固定格式,CISC指令集使用操作码的扩展技术
目的
对于一部分不需要某个地址码的指令,我们可以将指令码扩展到地址码
方法
码点:操作码的隔断标记
下面使用一个例子来介绍,有一个16位的指令,需要使用指令码扩展技术来扩展指令,需要在16位中容纳多种指令
指令类型 | 指令码 | 地址码 |
---|---|---|
三指令地址 | 0000 ~ 1110 | 后12位 |
二指令地址 | 1111 0000 ~ 1111 1110 | 后8位 |
一指令地址 | 1111 1111 0000 ~ 1111 1111 1110 | 后4位 |
零指令地址 | 1111 1111 1111 0000 ~ 1111 1111 1111 1111 |
寻址方式
我们将寻址方式分为两种,一种是需要使用ALU来计算的寻址方式,一种是无需计算的
需要计算的寻址方式
基址寻址
在计算机中设置一个专用的基址寄存器,操作数的地址由基址寄存器的内容和指令的地址码A相加得到
变址寻址
指令码部分给出地址码A和指定的变址寄存器X的内容通过加法器相加,所得的和作为地址从存储器中读出所需的操作数
相对寻址
将程序计数器PC 的内容和地址码部分给出的位移量Disp
相加,作为操作数的地址
堆栈寻址
操作数的地址 = 基址寄存器内容 + 变址寄存器内容 + 指令地址码A
无需计算的寻址方式
直接寻址
指令的地址码部分给出的操作数在存储器中的地址
寄存器寻址
指令码的地址码部分给出寄存器的地址,寄存器中存着操作数
间接寻址
地址码A存储寄存器或内存中存储的地址,寻找到内存中或寄存器内的地址再寻找操作数
立即数寻址
操作数由指令的地址码部分直接给出来
指令类型
指令的分类和功能
-
算数逻辑运算指令
主要用于进行定点和浮点运算。这类运算 包括加、减、乘、除以及加1、减1、比较等, 有些机器还有十进制算术运算指令。 绝大多数算术运算指令都会影响到结果状 态标志位,通常的标志位有进位(C)、溢出 (V)、全零(Z)、负(N)、奇偶位(P)。
-
移位操作指令
-
浮点运算指令
-
十进制运算指令
-
字符串处理指令
-
数据传送指令
此类指令用于实现寄存器与寄存器、 寄存器与存储单元、存储单元与存储单 元之间的数据传送。
-
转移指令
-
无条件转移指令
不受任何条件约束,直接把程序转移到指令所规定目的地
-
条件转移指令
根据某些标志为转移
-
调用指令和返回指令
调用函数或者能够独立完成某一个特定功能的程序块,调用后保留返回地址
-
陷阱指令
出现意外情况,计算机就发出陷阱信号,转入故障处理程序进行故障处理
-
-
堆栈及堆栈操作指令
-
压入
- 首先把堆栈指针SP减量(减量的多少取决于压入数据的字节数)
- 然后把数据送入SP制定单元
-
弹出
- 首先把SP所指定的单元的数据取出
- 根据数量对SP进行增加
-
堆栈的结构
-
寄存器堆栈
这种堆栈的栈顶是固定的,寄存器组中各寄存器是相互连接的,它们之间具有对应位自动推移的功能,即可将一个寄存器的内容推移到相邻的另一个寄存器中去。
-
存储器堆栈
从主存中划出一段区域来作堆栈, 这种堆栈又称为软堆栈,堆栈的大小可变,栈底固定,栈顶浮动,故需要一个专门的硬件寄存器作为堆栈栈顶指针SP,简称栈指针。
-
-
-
IO指令
输入/输出(I/O)类指令用来实现主机与外部设备之间的信息交换
-
特权指令
指令系统的兼容性
-
兼容机:
各个计算机公司生产的同一系列计算机指令系统、数据格式等保持相同,在此基础上产生了。
-
向上兼容:
旧机型上程序不加任何修改就可以在新机器上运行
双字长的加减法
- 加法:
- 如果由ADC指令:直接实现
- 如果没有ADC指令:拆分成多个步骤完成
- 减法:
- 低位相减,若不够减,则C=1,若够减,则C=0。
- 高位相减,若上次运算后C=0 ,减数取补码,若C=1 ,减数取反码。
RISC 和 CISC
CISC
- 起因:计算机的硬件成本不断降低,软件的成本不断提高
- 特点:指令数量多,格式多样,寻址方式复杂
- 优点:功能强大,程序设计容易
- 缺点:硬件实现较为复杂,指令执行的时间不固定
RISC
- 特点:
- 指令数量少
- 指令长度格式
- 访问存储器的指令少
- 优点:运行速度快,硬件实现简单
- 缺点:功能简单