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

指令系统

    • 操作与操作数
      • 操作类型
      • 操作数类型
    • 数据的存放 - 大端/小端
      • 按字存储
      • 存放空间布局
        • 铺垫
        • 字节对齐
    • 指令格式
      • 指令的基本格式 = 地址码+操作码
        • 地址码A - 地址码的个数
        • 操作码OP - 定长操作码和扩展操作码
          • 定长操作码
          • 扩展操作码
          • 例题
    • 寻址方式
      • 指令寻址
        • 顺序寻址
        • 跳跃寻址
      • 数据寻址
        • 与主存与寄存器都无关
          • 立即寻址 : # 立即数
        • 与主存有关
          • 隐含寻址 : 比如PC程序计数器
          • 直接寻址
          • 间接寻址
        • 与寄存器有关
          • 寄存器寻址
          • 寄存器间接寻址 : 寄存器+主存
        • 偏移寻址
          • 基址寻址 - 面向操作系统 - 程序的主存分配
          • 变址寻址 - 面向用户 - 数组的循环遍历
            • 基址寻址与变址寻址的结合使用
          • 相对寻址 - 找数据
        • 堆栈寻址
      • 指令集 (Instruction Set Computer)
        • 复杂指令集(Complex Instruction Set Computer) - X86体系,常用于笔记本
        • 精简指令集(Reduced Instruction Set Computer) - ARM架构,常用于手机

操作与操作数

操作类型

数据传送类 / 运算类 / 程序控制类 / 输入输出类(I/O)
计算机组成原理 - 指令系统_第1张图片

操作数类型

计算机组成原理 - 指令系统_第2张图片

数据的存放 - 大端/小端

若干字节称为字
12H = 0001 0010 B
这里4字节为1个字 (一行)
计算机组成原理 - 指令系统_第3张图片

按字存储

存放空间布局

铺垫

方式一:
计算机组成原理 - 指令系统_第4张图片方式二:
计算机组成原理 - 指令系统_第5张图片

字节对齐

综合:
计算机组成原理 - 指令系统_第6张图片

指令格式

计算机运行的最小功能单位
指令集:所有指令的集合
一台计算机智能执行自己指令系统中的指令

指令的基本格式 = 地址码+操作码

计算机组成原理 - 指令系统_第7张图片

地址码A - 地址码的个数

四地址指令 -> 优化后 三地址指令
如果把数据和指令放在一起,访存空间比较小
所以 优化为三地址: 我们数据的放数据, 指令的放指令 ,指令执行完自动+1
优化为二地址:OP操作后的结果覆盖A1地址的数据
一地址指令:默认目的操作对象 是ACC(累加器 )
计算机组成原理 - 指令系统_第8张图片计算机组成原理 - 指令系统_第9张图片计算机组成原理 - 指令系统_第10张图片计算机组成原理 - 指令系统_第11张图片

操作码OP - 定长操作码和扩展操作码

定长操作码

计算机组成原理 - 指令系统_第12张图片

扩展操作码

如果读到1111 就证明 这是一个二地址操作码

1111 OP dataA dataB  // 二地址指令

同理 如果读到1111 1111 就证明 这是一个一地址操作码
OP操作码用0000-1110编号表示
计算机组成原理 - 指令系统_第13张图片

例题

最顶层: 12条二地址指令 :
∵二地址 :1111
∵12条:OP由12个数表示 (零到十一)

0000 - 1011
0 - 11
操作码
∴ 1111 0000 - 1111 1011 A1 A2
2 2 2 2    2  2  2   2            
1 1 1 1    1  1  1   1 
2 4 8 16  32 64 128 356 

计算机组成原理 - 指令系统_第14张图片
计算机组成原理 - 指令系统_第15张图片

寻址方式

计算机组成原理 - 指令系统_第16张图片

指令寻址

指令地址存储在PC(程序计数器)中,
PC在CPU的控制器里
计算机组成原理 - 指令系统_第17张图片计算机组成原理 - 指令系统_第18张图片

顺序寻址

PC中存储的是当前的指令地址

(PC)+1 ->PC

计算机组成原理 - 指令系统_第19张图片

跳跃寻址

计算机组成原理 - 指令系统_第20张图片

数据寻址

计算机组成原理 - 指令系统_第21张图片

寻址特征: 区分用哪种方式寻址
形式地址: 偏移地址

计算机组成原理 - 指令系统_第22张图片计算机组成原理 - 指令系统_第23张图片

与主存与寄存器都无关

立即寻址 : # 立即数

给出的就是操作数(操作对象)
计算机组成原理 - 指令系统_第24张图片

与主存有关

隐含寻址 : 比如PC程序计数器

程序默认给定地址
计算机组成原理 - 指令系统_第25张图片

直接寻址

存的就是真实地址
计算机组成原理 - 指令系统_第26张图片

间接寻址

存的是地址的地址
指针
两次间址 : 二级指针
计算机组成原理 - 指令系统_第27张图片计算机组成原理 - 指令系统_第28张图片

与寄存器有关

寄存器寻址

给出的是寄存器编号
计算机组成原理 - 指令系统_第29张图片

寄存器间接寻址 : 寄存器+主存

计算机组成原理 - 指令系统_第30张图片

偏移寻址

计算机组成原理 - 指令系统_第31张图片

基址寻址 - 面向操作系统 - 程序的主存分配

CPU中的基址寄存器BR + 偏移地址
基地址由操作系统给出,用户只能改变偏移地址

- 有利于多道程序设计,有利于编制浮动程序,多用于分配程序到主存当中

隐式: 有专门的基址寄存器BR
显示: 一堆通用寄存器R中,选一个作为基址寄存器

计算机组成原理 - 指令系统_第32张图片基址寻址 比起 直接寻址的好处:
基址寻址的BR基址地址由操作系统分配,不需要客户去寻真正的物理地址,更加的灵活,不用担心真实地址被占用的情况

变址寻址 - 面向用户 - 数组的循环遍历

CPU中的变址寄存器IX + 偏移地址
偏移地址不变,基地址由用户进行改变

- 特别适合循环遍历 尤其是数组
计算机组成原理 - 指令系统_第33张图片

基址寻址与变址寻址的结合使用

计算机组成原理 - 指令系统_第34张图片

相对寻址 - 找数据

程序计数器PC内容 +偏移地址

尝尝用来跳转 , 转移指令 , 比较好根据偏移地址找到对应数据
计算机组成原理 - 指令系统_第35张图片计算机组成原理 - 指令系统_第36张图片

堆栈寻址

堆栈指针SP

硬堆栈: 寄存器作为堆栈
软堆栈: 主存堆栈段作为堆栈

计算机组成原理 - 指令系统_第37张图片
计算机组成原理 - 指令系统_第38张图片

指令集 (Instruction Set Computer)

计算机组成原理 - 指令系统_第39张图片计算机组成原理 - 指令系统_第40张图片

复杂指令集(Complex Instruction Set Computer) - X86体系,常用于笔记本

精简指令集(Reduced Instruction Set Computer) - ARM架构,常用于手机

80%的程序只用到了20%的指令,所以对于指令集进行精简

你可能感兴趣的:(计算机组成原理)