【问题标题】:RISCV resolving opcodeRISCV 解析操作码
【发布时间】:2019-02-14 15:28:57
【问题描述】:

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

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

【问题讨论】:

  • 欢迎来到 StackOverflow!我不清楚:您是否要手动反汇编二进制代码?

标签: riscv


【解决方案1】:

正如你所说,RISC-V 是 little-endian,所以地址 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。 要检查答案,最好使用汇编器/仿真器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    • 1970-01-01
    • 2011-04-11
    • 2017-06-21
    • 1970-01-01
    相关资源
    最近更新 更多