四大类指令

一个完备的指令系统通常包含四大类基本指令,以满足各种计算和控制需求。

  1. 数据传输类指令
    • 实现寄存器、主存单元之间的数据交换。
    • 包括普通传输 (Move)、堆栈操作 (Push/Pop) 和数据交换 (Exchange)。
  2. 运算类指令
    • 算术运算:加、减、乘、除、加 1、减 1 等。会影响状态标志位 (CF, OF, SF, ZF 等),供 CPU 监控运算状态。
    • 逻辑运算:与 (AND)、或 (OR)、非 (NOT)、异或 (XOR)。 重点
      • 位检测:使用掩码进行 与 (AND) 运算。例如检测某位是否为 1(x & 0010)。
      • 位清零:使用掩码进行 与 (AND) 运算。例如将某位清零(x & 1101)。
      • 位置位:使用掩码进行 或 (OR) 运算。例如将某位置 1(x | 0010)。
      • 位取反:使用掩码进行 异或 (XOR) 运算。例如将某位取反(x ^ 0010)。
      • 判等:两数 异或 (XOR),若结果为 0 则相等(A ^ B == 0)。
    • 移位运算:算术移位(补符号位)、逻辑移位(补 0)、循环移位。
  3. 控制类指令
    • 改变程序的执行顺序。
    • 包括无条件转移 (JMP)、条件转移 (JZ, JNZ)、子程序调用 (CALL) 和返回 (RET)。
  4. I/O 指令
    • 用于 CPU 与外设之间的数据交换。
    • 存在性:取决于外设的编制方式(存储器编制方式)。
      • 独立编制 (如 x86):有专用的 IN, OUT 指令。
      • 统一编制 (如 ARM):无专用 I/O 指令,使用通用的数据传输指令 (如 MOV, LDR, STR) 访问 I/O 地址。
指向原始笔记的链接

完备性与发展

  • 完备性:只要具备上述四类功能,指令系统即为完备。
  • 发展趋势
    • CISC (复杂指令集):为了满足新功能不断增加指令,导致指令集庞大(如 x86)。
    • RISC (精简指令集):基于 20-80 定律(20% 的简单指令占 80% 的使用频率),精简指令集,优化常用指令(如 ARM, RISC-V)。