RISCV解析操作码

RISCV resolving opcode

我需要帮助来理解如何在 RISCV 中解决这个问题。 为以下十六进制值提供汇编语言指令:
地址 1000:b3 地址 1001: 0b 地址 1002:9c 地址 1003: 41

我知道我必须更改为二进制并且 RISCV 是小字节序的,但除此之外我不知道如何继续。我有几个这样的问题,但我想自己做剩下的事情。

正如你所说,RISC-V 是小端字节序的,所以地址 1000 到 1003 处的字是 0x419c0bb3,二进制:

01000001100111000000101110110011

首先要注意的是,指令以 0110011 结尾。这与几个指令匹配,请参阅 riscv-spec-v2.2.pdf 中的第 104 页和第 105 页。为了进一步解码指令,我检查了位 14-12 中的 FUNC3 字段,它们是 000。我只能使用一些可能的指令,ADDSUBMUL。我现在检查指令的最重要的 7 位,0100000。指令是SUB。指令的完整解码为:

FUNC7   rs2   rs1   FUNC3 rd    OPCODE
0100000 11001 11000 000   10111 0110011

在汇编程序中,这应该是 sub x23,x24,x25。 要检查答案,最好使用 assembler/emulator.