RISCV反汇编选项数字和无别名

oda*_*rcy 3 disassembly riscv

我克隆了riscv-tools存储库(主分支),并遵循构建过程。一切都很好。

然后,我尝试为RV32IM指令集编译hello world程序,方法是:

riscv64-unknown-elf-gcc -m32 -march=RV32IM -o hello hello.c -save-temps
Run Code Online (Sandbox Code Playgroud)

我使用选项save-temps保留中间文件。(hello.s,hello.i,hello.o)

到目前为止一切正常,我可以使用以下命令运行hello world程序:

spike pk hello
Hello world!
Run Code Online (Sandbox Code Playgroud)

现在,我想看看该程序的汇编代码。我做了以下工作,并将汇编代码放到了hello.dump中

riscv64-unknown-elf-objdump -D -S -l -F  hello.o > hello.o.dump
Run Code Online (Sandbox Code Playgroud)

现在,我将感兴趣的是没有伪指令且具有非ABI寄存器名称的汇编代码。

当我这样做时,似乎可以做到:

riscv64-unknown-elf-objdump --target-help
Run Code Online (Sandbox Code Playgroud)

我得到这个:

The following RISC-V-specific disassembler options are supported for use
with the -M switch (multiple options should be separated by commas):

numeric       Print numeric reigster names, rather than ABI names.

no-aliases    Disassemble only into canonical instructions, rather
              than into pseudoinstructions.
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试添加这些选项时,它不起作用。

riscv64-unknown-elf-objdump -D -S -l -F  -Mno-aliases hello.o > hello.o.dump
Unrecognized disassembler option: no-aliases

riscv64-unknown-elf-objdump -D -S -l -F  -Mnumeric hello.o > hello.o.dump
Unrecognized disassembler option: numeric

riscv64-unknown-elf-objdump -D -S -l -F  -Mnumeric,no-aliases hello.o > hello.o.dump
Unrecognized disassembler option: numeric
Unrecognized disassembler option: no-aliases
Run Code Online (Sandbox Code Playgroud)

它是命令语法错误还是反汇编器尚不支持?

Cli*_*nna 5

我可以重现此错误并获得相同的错误消息。然而,riscv64-unknown-elf-objdump根据选项的要求返回0,并且输出文件中确实包含没有伪指令和/或具有数字寄存器名称的汇编器转储。因此,这似乎按预期方式工作,它还会输出令人讨厌的错误消息。

riscv-tools自2月份以来,该回购协议尚未更新。我还使用更新版本的尝试了此操作,riscv-gnu-toolchain在此我没有收到错误消息。因此,我想说这是一个非关键错误,已经修复riscv-gnu-toolchain,因此将在此更新后riscv-tools立即修复riscv-gnu-toolchain