操作码 (Opcode, OP) 决定了指令的功能。每个指令系统中,每条指令都有唯一的 OP。

设计形式

规整型操作码

  • 操作码字段的 位数位置 固定。
  • 优点:简化硬件设计,减少译码时间。
  • 示例
    • IBM 360/370:大型机系统,尽管指令长度有半字长(16 位)、单字长(32 位)、一个半字长(48 位)之分,但其操作码一律为 8 位重点

非规整型操作码

  • 操作码字段的位数不固定。
  • 示例
    • PDP-11:16 位微型机,指令长度有 16、32、48 位,操作码长度也有 4、8、10、13、16 位等多种变化。这增加了译码和分析的难度,使控制器设计更复杂。

扩展操作码技术

为了在有限的指令字长内支持更多指令,常采用扩展操作码技术:

  • 原则:操作数地址个数多的指令,操作码短;操作数地址个数少的指令,操作码长。 重点
  • 实现:通过保留某个状态作为扩展窗口(Extension Window)。

设计实例

假设某机器指令字长为 16 位,每个地址码为 4 位。

  1. 三地址指令

    • 格式:OP(4位) | A1(4位) | A2(4位) | A3(4位)
    • 如果采用定长编码,4 位 OP 最多支持 16 条指令。
    • 扩展设计
      • 使用 OP 的 0000 ~ 1110 (15 种状态) 表示 15 条三地址指令
      • 保留 1111 作为扩展窗口,进入下一级。
  2. 二地址指令

    • 格式:OP(8位) | A1(4位) | A2(4位)
    • OP 的前 4 位必须是 1111
    • 后 4 位使用 0000 ~ 1110 (15 种状态) 表示 15 条二地址指令
    • 保留 1111 1111 作为扩展窗口。
  3. 一地址指令

    • 格式:OP(12位) | A1(4位)
    • OP 的前 8 位必须是 1111 1111
    • 后 4 位使用 0000 ~ 1110 (15 种状态) 表示 15 条一地址指令
    • 保留 1111 1111 1111 作为扩展窗口。
  4. 零地址指令

    • 格式:OP(16位)
    • OP 的前 12 位必须是 1111 1111 1111
    • 后 4 位可以使用 0000 ~ 1111 (16 种状态) 表示 16 条零地址指令

总指令条数 条。 注:扩展窗口的数量和位置可以根据设计需求调整,不一定是 1 个。