跳到主要内容

指令系统

指令系统(ISA)是硬件与软件之间的接口,规定了 CPU 能识别与执行的全部操作。本篇介绍指令格式、常见寻址方式,以及 CISC 与 RISC 的设计哲学差异。

指令格式

一条指令通常由 操作码 (OP) 与 地址码 (A) 两部分组成:

| 操作码 OP | 地址码 A / 操作数 |
| n 位 | m 位 |
  • 操作码 指明指令功能,如加、减、传送、跳转。
  • 地址码 给出操作数或操作数地址,数量可为 0-3 个,常见有 零地址(栈机)、一地址(累加器机)、二地址(通用寄存器机)、三地址(如 ADD R1,R2,R3)。

按操作数长度,指令又可分为定长指令(译码简单、RISC 主流)与变长指令(密度高、CISC 主流)。

寻址方式

寻址方式决定操作数如何获取,影响指令灵活性与代码密度。

  • 立即寻址:操作数就在指令中,MOV R1, #5,速度快但位数受限。
  • 直接寻址:指令给出内存地址,MOV R1, [2000H]
  • 寄存器寻址:操作数在寄存器中,速度最快,ADD R1, R2
  • 寄存器间接寻址:寄存器中存的是地址,MOV R1, [R2],用于指针。
  • 变址寻址:基址 + 变址寄存器偏移,适合数组访问,MOV R1, [R2 + R3]
  • 相对寻址:以 PC 当前值为基准加减偏移,用于分支跳转。

CISC vs RISC

维度CISC (x86)RISC (ARM/RISC-V)
指令条数多,达数百条少而精
指令长度变长 1-15 字节定长 4 字节
寻址方式丰富(>10 种)精简(load/store)
访存指令可对内存直接运算仅 load/store 访存
流水线实现复杂易实现高频率
译码微程序/硬布线硬布线
目标减少代码空间提高速度与并行度

现代 x86 处理器内部已将 CISC 指令拆分为类 RISC 微操作(µops)执行,RISC-V 与 ARM 持续向高性能与向量扩展演进。理解 ISA 差异有助于做编译优化、跨平台移植与性能调优。