计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」

文章目录

  • 1. 指令格式
    • 1.1 指令的基本概念
    • 1.2 指令的分类
      • 1.2.1 按地址码(操作数)长度/数目分类
      • 1.2.2 按指令的长度分类
      • 1.2.3 按操作码长度分类
      • 1.2.4 按操作类型分类
    • 1.3 扩展操作码指令
      • 1.3.1 扩展操作码的组成
      • 1.3.2 扩展操作码的设计
  • 2. 指令的寻址方式
    • 2.1 指令寻址和数据寻址
      • 2.1.1 指令寻址(通过PC)
      • 2.1.2 数据寻址
        • 2.1.2.1 直接寻址
        • 2.1.2.2 间接寻址
        • 2.1.2.3 寄存器寻址
        • 2.1.2.4 寄存器间接寻址
        • 2.1.2.5 隐式寻址
        • 2.1.2.6 立即寻址
        • 2.1.2.7 基于偏移量进行寻址
          • 2.1.2.7.1 基址寻址
          • 2.1.2.7.2 变址寻址
          • 2.1.2.7.3 相对寻址
        • 2.1.2.8 堆栈寻址
      • 2.1.3 小结
      • 2.1.4 条件转移指令
    • 2.2 CISC vs RISC
    • 3.2 知识点补充

1. 指令格式

1.1 指令的基本概念

一条指令通常操作码地址码组成:(关机操作就只有操作码)
在这里插入图片描述
地址码:指令地址(控制类指令)数据地址(非控制类指令),包含参与程序的转移地址、被调用的子程序的入口地址 、运算的一个或多个地址、运算结果的保存地址 等

注:

  1. 一台计算机只能执行自己指令系统中的指令,不能执行其他系统的指令。Eg:x86架构、ARM架构 上的软件不能互相在对方上直接运行。
  2. 指令系统是计算机软件与硬件的交界处,os是最靠近硬件的软件。
  3. 指令译码是指对指令的操作码字段译码,而不是整条指令

1.2 指令的分类

1.2.1 按地址码(操作数)长度/数目分类

计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第1张图片

注意:算访存次数时,记得加上取指令

1.2.2 按指令的长度分类

计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第2张图片

注意:是指令字长 / 机器字长而不是存储字长

1.2.3 按操作码长度分类

计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第3张图片

例题:

  1. 若是寄存器,则对寄存器编码,而不是寄存器位数
    计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第4张图片

1.2.4 按操作类型分类

计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第5张图片

例题:指令类型的判断
计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第6张图片
在这里插入图片描述

1.3 扩展操作码指令

1.3.1 扩展操作码的组成

在这里插入图片描述
目的:为了在保持指令长度不变,增加指令数量。(操作码长度随地址码的减少而增加)

1.3.2 扩展操作码的设计

计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第7张图片

例题:

  1. 扩展操作码设计:先设计操作码短的
    计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第8张图片
  2. 计算剩余指令条数(固定 vs 扩展)
    计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第9张图片
    计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第10张图片

2. 指令的寻址方式

2.1 指令寻址和数据寻址

注意:地址码分为指令地址数据地址—>指令寻址和数据寻址
计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第11张图片

2.1.1 指令寻址(通过PC)

在这里插入图片描述
目的:实现程序控制

指令寻址的分类:

  1. 顺序寻址: 由 PC自动加"1"得到【1指一个指令字长
  2. 跳跃寻址: 执行类似jmp跳跃指令,直接更改PC的值,实现指向下一条指令。
    计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第12张图片

2.1.2 数据寻址

在这里插入图片描述
指令的地址码被细分成寻址特征 + 形式地址。其中寻址特征就是用来区分寻址方式的。

采用不同寻址的目的:

  1. 缩短指令字长
  2. 扩大寻址空间
  3. 提高编程的灵活性
    缺点:增加了指令译码难度。
    计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第13张图片
2.1.2.1 直接寻址

计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第14张图片

2.1.2.2 间接寻址

计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第15张图片

注意:形式地址A是主存的地址

2.1.2.3 寄存器寻址

计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第16张图片

2.1.2.4 寄存器间接寻址

计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第17张图片

例题:
计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第18张图片

2.1.2.5 隐式寻址

计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第19张图片

注意:隐式寻址,是给出一个操作数的,隐藏另一个的。

2.1.2.6 立即寻址

计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第20张图片

2.1.2.7 基于偏移量进行寻址

偏移寻址:将某个寄存器的内容与形式地址相加得到的有效地址。
计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第21张图片

2.1.2.7.1 基址寻址

计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第22张图片

注意:

  1. 基址寄存器的组成:
    1. 专业寄存器BR
    2. 通用寄存器
      注意:如果采用的是通用寄存器的方式,则还需要在寻址特征与形式地址A之间让出几位用于标记是哪个通用寄存器。若是专用寄存器,则不需要。
  2. 基址寻址用于实现程序在内存中浮动有利于实现多道程序
  3. 基址寄存器是面向os的。其值由os决定,而哪个寄存器作为基址寄存器由用户决定。
  4. 基址寄存器 = 重定位寄存器

例题:
计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第23张图片
计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第24张图片

2.1.2.7.2 变址寻址

计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第25张图片

注意:

  1. 变址寄存器的组成:
    1. 专业寄存器IX
    2. 通用寄存器
      如果采用的是通用寄存器的方式,则还需要在寻址特征与形式地址A之间让出几位用于标记是哪个通用寄存器。若是专用寄存器,则不需要。
  2. 变址寄存器是面向用户的,其值由用户设置
  3. 变址寄存器常用来循环访问数组。

例题:
计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第26张图片
计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第27张图片
计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第28张图片

2.1.2.7.3 相对寻址

计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第29张图片

注意:相对寻址用于实现程序段在内存的浮动,也有利于实现多道程序,也有利于实现程序的转移/跳转。【注意是转移不是浮动,程序的浮动是基址寻址的功能】

  • 考点:PC在取指周期末自加,且形式地址是补码表示,记m = 指令字长/存储字长,则 PC = (PC) + m + m*偏移量
    计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第30张图片
    计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第31张图片
    计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第32张图片
    计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第33张图片

PC++在取指周期末,条件转移指令跳转是在执行周期内:
在这里插入图片描述

2.1.2.8 堆栈寻址

计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第34张图片

注意:

  1. 注意栈顶和栈底方向,以及栈顶指针是指向栈顶元素还是栈顶上的空元素。
    计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第35张图片

2.1.3 小结

计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第36张图片

注意:

  1. 定长指令时,立即寻址最快;不定长指令时寄存器寻址最快。
    不定长指令的最短,是寄存器寻址,而不是隐藏寻址
    计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第37张图片

综合例题:

  1. 汇编中运算的结果默认存放到目的操作数的形式地址所指向的单元中
  2. 汇编中的指令,sub A, BA,B这种都是有效地址,故能够根据指令识别直接还是间接寻址,R是直接,(R)是间接
    在这里插入图片描述
  3. 求相对寻址范围时,注意是对于某条指令【PC固定】,还是对于所有指令【PC为主存范围】
    计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第38张图片

2.1.4 条件转移指令

计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第39张图片

注意:根据上题可知,条件转移指令的判断条件来自于标志寄存器,实现方式是程序计数器
在这里插入图片描述

2.2 CISC vs RISC

计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第40张图片

练习:
计组高分笔记:【04】指令系统 「指令格式与分类 | CISC、RISC | 直接寻址 | 间接寻址 | 寄存器寻址 | 隐式寻址 | 立即寻址| 基址寻址 | 变址寻址 | 相对寻址 | 堆栈寻址」_第41张图片

3.2 知识点补充

1. 判断:指令系统是计算机软/硬件的界面。
	正确。指令是系统位于软件和硬件的交界面上,是软件的最低级界面,是硬件的最高级界面(指令驱动硬件运行)。

2. 判断:指令系统和机器语言无关。
	错误。指令系统是计算机硬件的语言系统,而机器语言与硬件息息相关,故指令系统与机器语言相关。

3. CPU执行过程中,指令的地址都是由PC给出。而无论是什么寻址,想改变程序执行的跳转,都是通过修改PC的值实现的。

4. 运算型指令的功能是取操作数,控制型指令的功能是改变程序执行的顺序。
	常见的控制指令:循环指令、转换指令、条件转移指令、无条件转移指令、子程序调用指令、返回指令等
	注意:中断指令是由硬件实现的,并不是指令系统中的指令。

5. 指令系统中采用不同寻址方式的原因是( )
	A. 提供扩展操作码的可能并降低指令译码难度。
	B. 可缩短指令字长、扩大寻址空间、提高编程的灵活性。
	C. 实现程序的控制
	D. 以上都正确。
	选B。A中指令译码难度增加,因为寻址方式变多了。C,实现程序的控制是由靠转移指令而非寻址方式实现的。
	B中采用立即寻址可缩短指令字长,采用寄存器寻址可扩大寻址空间,采用相对寻址可提高编程的灵活性。

6. 简化地址结构的基本方法是尽量采用( )
	A. 寄存器寻址		B. 隐地址		C. 直接寻址		D. 间接寻址。
	选B。只有B才能最大的缩短地址码位数。

8. 判断:
	A. RISC机一定采用流水技术
	B. 采用流水技术的一定是RISC机
	C. RISC机的兼容性优于CISC机
	D. CPU配置很少的通用寄存器
	只有A正确。

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