命令的执行
Implementation of a Command
我对具体命令的实现有点迷茫。
在这个例子中,有一个命令传递给 0x00c6ba23
,它是二进制 0000 0000 1100 0110 1011 1010 0010 0011
我正在尝试为这条指令找到 ALU 控制单元的输入。
由此可见
- 操作码=
0100011
- imm[4:0] =
10100
- funct3 =
011
(不正确...)
- rs1 =
01101
- rs2 =
01100
- imm[11:5] =
0000000
我正在使用这张图片解码它
我的问题是如何获得此函数的 ALU 控制位和 ALUOp 控制位?为什么功能 SD,即使功能 3 显示的是 011 而不是 111?
... why is the function SD, even though the funct 3 is showing 011 instead of 111?
011 是正确的。 funct3 位必须为 011 才能成为 SD 指令。根据 https://content.riscv.org/wp-content/uploads/2017/05/riscv-spec-v2.2.pdf 第 105 页,SD 指令的格式为:
| imm[11:5] | rs2 | rs1 | 011 | imm[4:0] | 0100011 |
如果 funct3 位是 111 那么这条指令就不是 SD。
... how do I get the ALU control bits and ALUOp control bits for this function?
由于这是一条 SD 指令,您可以直接从您在问题中引用的图表中下方 table 的 SD 行中读取这些位。
我对具体命令的实现有点迷茫。
在这个例子中,有一个命令传递给 0x00c6ba23
,它是二进制 0000 0000 1100 0110 1011 1010 0010 0011
我正在尝试为这条指令找到 ALU 控制单元的输入。
由此可见
- 操作码=
0100011
- imm[4:0] =
10100
- funct3 =
011
(不正确...) - rs1 =
01101
- rs2 =
01100
- imm[11:5] =
0000000
我正在使用这张图片解码它
我的问题是如何获得此函数的 ALU 控制位和 ALUOp 控制位?为什么功能 SD,即使功能 3 显示的是 011 而不是 111?
... why is the function SD, even though the funct 3 is showing 011 instead of 111?
011 是正确的。 funct3 位必须为 011 才能成为 SD 指令。根据 https://content.riscv.org/wp-content/uploads/2017/05/riscv-spec-v2.2.pdf 第 105 页,SD 指令的格式为:
| imm[11:5] | rs2 | rs1 | 011 | imm[4:0] | 0100011 |
如果 funct3 位是 111 那么这条指令就不是 SD。
... how do I get the ALU control bits and ALUOp control bits for this function?
由于这是一条 SD 指令,您可以直接从您在问题中引用的图表中下方 table 的 SD 行中读取这些位。