第4章 指令集设计
第一篇 基础篇
4.1 指令格式#
我们采用定长 16 位指令字,分为三种格式:
R 型(寄存器操作)#
[opcode:4] [rd:4] [rs1:4] [rs2:4]plaintextI 型(立即数操作)#
[opcode:4] [rd:4] [rs1:4] [imm:4]plaintextJ 型(跳转)#
[opcode:4] [cond:2] [addr:10]plaintext4.2 指令列表#
| 指令 | 格式 | 操作码 | 说明 |
|---|---|---|---|
| ADD | R | 0000 | rd = rs1 + rs2 |
| SUB | R | 0001 | rd = rs1 - rs2 |
| ADDI | I | 0010 | rd = rs1 + imm |
| LOAD | I | 0011 | rd = mem[rs1 + imm] |
| STORE | I | 0100 | mem[rs1 + imm] = rd |
| JMP | J | 0101 | 无条件跳转 |
| JZ | J | 0110 | Zero 标志置位时跳转 |
4.3 寻址模式#
支持三种寻址模式:
- 寄存器直接寻址:操作数在寄存器中
- 立即数寻址:操作数在指令中
- 寄存器间接寻址:操作数地址在寄存器中