RISCV 反汇编选项数字和无别名
RISCV dissassembly options numeric and no-aliases
我克隆了 riscv-tools 存储库(master 分支)并遵循了构建过程。一切顺利。
然后我尝试为 RV32IM 指令集编译 hello world 程序,这样做:
riscv64-unknown-elf-gcc -m32 -march=RV32IM -o hello hello.c -save-temps
我使用选项 save-temps 来保存中间文件。 (hello.s, hello.i, hello.o)
到目前为止一切正常,我可以 运行 hello world 程序:
spike pk hello
Hello world!
现在我想看看这个程序的汇编代码。我做了以下操作,并将汇编代码放入 hello.dump
riscv64-unknown-elf-objdump -D -S -l -F hello.o > hello.o.dump
现在我感兴趣的是没有伪指令和非 ABI 寄存器名称的汇编代码。
当我这样做时,似乎有可能得到它:
riscv64-unknown-elf-objdump --target-help
我明白了:
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.
然而,当我尝试添加这些选项时,它不起作用。
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
是命令语法错误还是反汇编程序还不支持它?
我可以重现这个并得到相同的错误消息。然而,riscv64-unknown-elf-objdump
returns 0 和输出文件确实包含一个没有伪指令 and/or 的汇编程序转储,带有数字寄存器名称,如选项所要求的那样。所以它看起来像预期的那样工作,它也输出了一个恼人的错误消息。
riscv-tools
repo has not been updated since Feb. I also tried this with a build of a more recent version of riscv-gnu-toolchain
在这里我没有收到错误消息。所以我想说这是一个已经在 riscv-gnu-toolchain
中修复的非严重错误,因此一旦 riscv-gnu-toolchain
更新后它将在 riscv-tools
中修复。
你是对的,我确实收到了错误消息,但是当我查看汇编程序转储时,数字寄存器名称和非伪指令在文件中可见。
感谢您指出这只是正在打印的误导性错误消息...
我克隆了 riscv-tools 存储库(master 分支)并遵循了构建过程。一切顺利。
然后我尝试为 RV32IM 指令集编译 hello world 程序,这样做:
riscv64-unknown-elf-gcc -m32 -march=RV32IM -o hello hello.c -save-temps
我使用选项 save-temps 来保存中间文件。 (hello.s, hello.i, hello.o)
到目前为止一切正常,我可以 运行 hello world 程序:
spike pk hello
Hello world!
现在我想看看这个程序的汇编代码。我做了以下操作,并将汇编代码放入 hello.dump
riscv64-unknown-elf-objdump -D -S -l -F hello.o > hello.o.dump
现在我感兴趣的是没有伪指令和非 ABI 寄存器名称的汇编代码。
当我这样做时,似乎有可能得到它:
riscv64-unknown-elf-objdump --target-help
我明白了:
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.
然而,当我尝试添加这些选项时,它不起作用。
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
是命令语法错误还是反汇编程序还不支持它?
我可以重现这个并得到相同的错误消息。然而,riscv64-unknown-elf-objdump
returns 0 和输出文件确实包含一个没有伪指令 and/or 的汇编程序转储,带有数字寄存器名称,如选项所要求的那样。所以它看起来像预期的那样工作,它也输出了一个恼人的错误消息。
riscv-tools
repo has not been updated since Feb. I also tried this with a build of a more recent version of riscv-gnu-toolchain
在这里我没有收到错误消息。所以我想说这是一个已经在 riscv-gnu-toolchain
中修复的非严重错误,因此一旦 riscv-gnu-toolchain
更新后它将在 riscv-tools
中修复。
你是对的,我确实收到了错误消息,但是当我查看汇编程序转储时,数字寄存器名称和非伪指令在文件中可见。
感谢您指出这只是正在打印的误导性错误消息...