操作码 (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 位。
-
三地址指令:
- 格式:
OP(4位) | A1(4位) | A2(4位) | A3(4位) - 如果采用定长编码,4 位 OP 最多支持 16 条指令。
- 扩展设计:
- 使用 OP 的
0000~1110(15 种状态) 表示 15 条三地址指令。 - 保留
1111作为扩展窗口,进入下一级。
- 使用 OP 的
- 格式:
-
二地址指令:
- 格式:
OP(8位) | A1(4位) | A2(4位) - OP 的前 4 位必须是
1111。 - 后 4 位使用
0000~1110(15 种状态) 表示 15 条二地址指令。 - 保留
1111 1111作为扩展窗口。
- 格式:
-
一地址指令:
- 格式:
OP(12位) | A1(4位) - OP 的前 8 位必须是
1111 1111。 - 后 4 位使用
0000~1110(15 种状态) 表示 15 条一地址指令。 - 保留
1111 1111 1111作为扩展窗口。
- 格式:
-
零地址指令:
- 格式:
OP(16位) - OP 的前 12 位必须是
1111 1111 1111。 - 后 4 位可以使用
0000~1111(16 种状态) 表示 16 条零地址指令。
- 格式:
总指令条数: 条。 注:扩展窗口的数量和位置可以根据设计需求调整,不一定是 1 个。