命令的执行

Implementation of a Command

我对具体命令的实现有点迷茫。

在这个例子中,有一个命令传递给 0x00c6ba23,它是二进制 0000 0000 1100 0110 1011 1010 0010 0011

我正在尝试为这条指令找到 ALU 控制单元的输入。

由此可见

我正在使用这张图片解码

我的问题是如何获得此函数的 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 行中读取这些位。