计算机组成原理-指令系统

指令系统

指令格式

指令分类

  1. 零地址指令

    只给出操作码OP,没有显式地址

  2. 一地址指令

    1. 只有目的操作数的单操作数指令
    2. 隐含约定目的地址的双操作数指令
  3. 二地址指令

    常用的算数和逻辑运算指令,往往要求使用两个操作数,需要分别给出目的操作数和源操作数的地址,其中目的操作数的地址还用于保存本次的运算结果

  4. 三地址指令

    三个地址:源操作数,目的操作数,结果,结果存在第三个地址

  5. 多地址指令

    描述一批数据,使用多个地址来指出源数据存放的首地址

指令所包含的信息

  1. 操作码

    说明具体操作的性质和功能

  2. 操作数地址

    CPU通过该地址取得所需的操作数

  3. 操作结果的存储地址

    对操作数处理产生的结果保存在改地址内

  4. 下一条指令的地址

    指令顺序执行下一条指令地址由PC给出,当需要改变程序的运行顺序时,下一条指令的地址由指令给出

几种指令的优缺点比较

  1. 零地址,一地址,而地址
    1. 执行速度块
    2. 硬件实现简单
    3. 指令短
  2. 三地址,多地址
    1. 便于编程
    2. 硬件实现复杂

指令操作码的扩展技术

指令分为固定格式可变格式两种,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相加得到

基址寻址.png

变址寻址

指令码部分给出地址码A和指定的变址寄存器X的内容通过加法器相加,所得的和作为地址从存储器中读出所需的操作数
变址寻址.png

相对寻址

将程序计数器PC 的内容和地址码部分给出的位移量Disp相加,作为操作数的地址

堆栈寻址

操作数的地址 = 基址寄存器内容 + 变址寄存器内容 + 指令地址码A

无需计算的寻址方式

直接寻址

指令的地址码部分给出的操作数在存储器中的地址

直接寻址.png

寄存器寻址

指令码的地址码部分给出寄存器的地址,寄存器中存着操作数

间接寻址

地址码A存储寄存器或内存中存储的地址,寻找到内存中或寄存器内的地址再寻找操作数

间接寻址.png

立即数寻址

操作数由指令的地址码部分直接给出来

指令类型

指令的分类和功能

  1. 算数逻辑运算指令

    主要用于进行定点和浮点运算。这类运算 包括加、减、乘、除以及加1、减1、比较等, 有些机器还有十进制算术运算指令。 绝大多数算术运算指令都会影响到结果状 态标志位,通常的标志位有进位(C)、溢出 (V)、全零(Z)、负(N)、奇偶位(P)。

  2. 移位操作指令

  3. 浮点运算指令

  4. 十进制运算指令

  5. 字符串处理指令

  6. 数据传送指令

    此类指令用于实现寄存器与寄存器、 寄存器与存储单元、存储单元与存储单 元之间的数据传送。

  7. 转移指令

    1. 无条件转移指令

      不受任何条件约束,直接把程序转移到指令所规定目的地

    2. 条件转移指令

      根据某些标志为转移

    3. 调用指令和返回指令

      调用函数或者能够独立完成某一个特定功能的程序块,调用后保留返回地址

    4. 陷阱指令

      出现意外情况,计算机就发出陷阱信号,转入故障处理程序进行故障处理

  8. 堆栈及堆栈操作指令

    1. 压入

      1. 首先把堆栈指针SP减量(减量的多少取决于压入数据的字节数)
      2. 然后把数据送入SP制定单元
    2. 弹出

      1. 首先把SP所指定的单元的数据取出
      2. 根据数量对SP进行增加
    3. 堆栈的结构

      1. 寄存器堆栈

        这种堆栈的栈顶是固定的,寄存器组中各寄存器是相互连接的,它们之间具有对应位自动推移的功能,即可将一个寄存器的内容推移到相邻的另一个寄存器中去。

      2. 存储器堆栈

        从主存中划出一段区域来作堆栈, 这种堆栈又称为软堆栈,堆栈的大小可变,栈底固定,栈顶浮动,故需要一个专门的硬件寄存器作为堆栈栈顶指针SP,简称栈指针。

  9. IO指令

    输入/输出(I/O)类指令用来实现主机与外部设备之间的信息交换

  10. 特权指令

指令系统的兼容性

  1. 兼容机:

    各个计算机公司生产的同一系列计算机指令系统、数据格式等保持相同,在此基础上产生了。

  2. 向上兼容:

    旧机型上程序不加任何修改就可以在新机器上运行

双字长的加减法

  1. 加法:
    1. 如果由ADC指令:直接实现
    2. 如果没有ADC指令:拆分成多个步骤完成
  2. 减法:
    1. 低位相减,若不够减,则C=1,若够减,则C=0。
    2. 高位相减,若上次运算后C=0 ,减数取补码,若C=1 ,减数取反码。

RISC 和 CISC

CISC

  • 起因:计算机的硬件成本不断降低,软件的成本不断提高
  • 特点:指令数量多,格式多样,寻址方式复杂
  • 优点:功能强大,程序设计容易
  • 缺点:硬件实现较为复杂,指令执行的时间不固定

RISC

  • 特点:
    • 指令数量少
    • 指令长度格式
    • 访问存储器的指令少
  • 优点:运行速度快,硬件实现简单
  • 缺点:功能简单

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×