【王道考研·计算机组成原理】第4章 指令系统(整章完整版)

引言

第四章是“软硬件接口”章节,核心对象是 ISA(指令系统体系结构)。

这章的关键价值在于:

  1. 看懂一条指令如何被编码。
  2. 理解各种寻址方式的有效地址计算。
  3. 建立 CISC/RISC 的设计取舍视角。

图像化理解(Mermaid)


一、指令与指令系统

1. 指令基本组成

  1. 操作码字段(OP):做什么操作。
  2. 地址码字段(A):操作数在哪里。

2. 指令系统定义

指令系统是处理器可执行指令集合及其编码、格式、语义约定。

3. ISA 还约定什么

  1. 除了指令集合本身,ISA 还规定寄存器组织、数据表示方式、寻址方式和异常/中断响应接口。
  2. 某些题目会把“条件码寄存器、字长、编址方式”也视为 ISA 的组成内容。
  3. ISA 是程序员可见机器模型的核心,因此它决定软件能看到什么资源。

4. 指令字长

  1. 定长指令:硬件实现简单、译码快。
  2. 变长指令:编码灵活、代码密度高。

二、指令格式与扩展操作码

1. 零地址、一地址、二地址、三地址

  1. 零地址:常见于堆栈机。
  2. 一地址:另一个操作数隐含在累加器。
  3. 二地址:一个操作数常兼作结果。
  4. 三地址:表达最直观,指令位宽占用高。

2. 扩展操作码

思想:把低频指令分配更长编码,提升整体编码利用率。

考点:可编码条数与码长分配关系。

3. 指令系统设计基本要求

  1. 完备性:常用操作应能被指令系统直接支持。
  2. 高效性:编码与执行都应兼顾速度和存储开销。
  3. 规整性:格式与操作尽量统一,便于译码和编译器生成代码。
  4. 兼容性:新机器应尽量保持旧程序可运行。

三、寻址方式(重中之重)

1. 立即寻址

  1. 操作数就在指令中。
  2. 速度快,但常数范围受字段宽度限制。

2. 直接寻址

  1. 地址字段就是操作数内存地址。
  2. 访存次数较少,地址范围受限。

3. 间接寻址

  1. 地址字段给出“地址的地址”。
  2. 灵活但访存次数更多。

4. 寄存器与寄存器间接

  1. 寄存器寻址速度快。
  2. 寄存器间接适合指针操作。

5. 基址、变址、相对寻址

  1. 基址:EA = BR + A,利于程序重定位。
  2. 变址:EA = IX + A,利于数组与循环。
  3. 相对:EA = PC + A,利于分支跳转与位置无关代码。

6. 隐含寻址与堆栈寻址

  1. 隐含寻址不在指令中显式给出操作数地址,操作数位置由指令语义约定,如默认使用累加器。
  2. 堆栈寻址常把栈顶作为隐含操作数来源,零地址指令常与堆栈机结合出现。
  3. PUSH/POP、函数调用和返回都与堆栈寻址思想密切相关。

7. 顺序寻址与跳跃寻址

  1. 顺序寻址下,程序按 PC 自增的自然顺序执行。
  2. 跳跃寻址通过转移类指令改变 PC,使控制流跳到新位置。
  3. 分支、循环、函数调用本质上都依赖跳跃寻址实现控制转移。

8. 常见寻址方式的 EA 与访存特点

  1. 立即寻址通常不需要再访主存取操作数,但受指令字长限制。
  2. 直接寻址通常需要一次访存取操作数。
  3. 间接寻址往往需要先取有效地址、再取操作数,因此访存次数更多。
  4. 寄存器寻址几乎不访问主存,速度最快。
  5. 基址、变址、相对寻址的核心不是死记公式,而是理解“哪个寄存器参与地址形成、适合什么场景”。

四、程序控制类指令

1. 无条件转移与条件转移

  1. 无条件转移直接修改 PC。
  2. 条件转移需依赖标志位(Z、N、C、V 等)。

2. 调用与返回

  1. 调用指令保存返回地址。
  2. 返回指令恢复 PC。

3. 陷入与系统调用

  1. trap 由指令主动触发。
  2. 常用于用户态请求内核服务。

4. 操作类型再归类

  1. 数据传送类:装入、存储、寄存器传送。
  2. 算术逻辑类:加减乘除、与或非异或、比较、测试。
  3. 移位与位操作类:逻辑移位、算术移位、循环移位、置位清位。
  4. 程序控制类:转移、调用、返回、陷入。
  5. 输入输出类:端口输入、端口输出、启动 I/O 等。

五、CISC 与 RISC

1. CISC 特点

  1. 指令多且复杂。
  2. 寻址方式多。
  3. 代码密度高。

2. RISC 特点

  1. 指令少而规整。
  2. 多采用定长指令与 Load/Store 架构。
  3. 便于流水线与并行。

3. 考研结论

  1. 现代处理器常融合两者思想。
  2. ISA 只是接口,微结构可高度复杂。

六、PDF 例题与考点补充(第4章)

例题 1:相对寻址 EA 计算

题目:PC=1000H,位移 A=0010H,求 EA。

解:

1
EA = PC + A = 1010H

例题 2:基址寻址

题目:BR=2000H,A=0030H,求 EA。

解:

1
EA = BR + A = 2030H

例题 3:变址寻址场景

问:数组遍历最适合哪种寻址。

答:变址寻址。

解析:索引寄存器可随循环递增,地址生成代价低。

例题 4:为何 RISC 常用大量寄存器

解:

  1. 减少访存频次。
  2. 降低 Load/Store 压力。
  3. 增强流水线供数能力。

例题 5:立即数范围

题目:立即数字段 8 位无符号,能表示多大范围。

解:

1
[0, 255]

七、高频易错点

  1. 把“有效地址 EA”与“操作数”混淆。
  2. 把相对寻址误写为 EA = PC - A(方向错)。
  3. 忽略分支目标地址可能与取指 PC 更新时序有关。
  4. 误认为 RISC 指令一定更少字节。
  5. 把 trap 与外设中断混为一类。

八、本章速记清单

  1. 指令 = 操作码 + 地址码。
  2. 相对寻址常用 EA = PC + 偏移
  3. 基址利于重定位,变址利于数组。
  4. RISC 常见 Load/Store 架构。
  5. ISA 是软硬件协议边界。

总结

第四章的本质是“把程序语义映射成硬件可执行编码”。

掌握指令格式与寻址方式后,你会更容易理解下一章 CPU 的执行过程与控制信号来源。


作者:[Austoin]
参考来源:E:\PDF\计算机组成原理(含新大纲考点).pdf、E:\PDF\2027计算机组成原理_高清带书签版.pdf(章节知识点整合)