QEMU 能够以英特尔语法输出其汇编吗?

QEMU 能够以英特尔语法输出其汇编吗?

QEMU-d asm_in-d asm_out选项对于检查 QEMU 创建的动态生成的 asm 很有用。

不幸的是(对我来说)它默认使用 AT&T 语法。是否有选项可以使用 Intel 语法输出?

答案1

不,QEMU 没有提供用于选择反汇编语法的配置选项。(我们使用 binutils 反汇编程序源,因此输出 Intel 语法而非 AT&T 语法的代码都在那里,但我们不会将其连接到用户可以更改的内容。)

答案2

谢谢Peter Maydell 的回答我们知道 QEMU 的反汇编程序是基于 binutils 的。但 binutils 反汇编程序实际上支持英特尔语法,我们只需要知道要更改什么才能激活它。如果您愿意重新编译 QEMU,这里有一个补丁,它将无条件强制使用英特尔语法:

diff --git a/disas/i386.c b/disas/i386.c
index f1e376c..4493115 100644
--- a/disas/i386.c
+++ b/disas/i386.c
@@ -3682,7 +3682,7 @@ static char scale_char;
 int
 print_insn_i386 (bfd_vma pc, disassemble_info *info)
 {
-  intel_syntax = -1;
+  intel_syntax = 1;

   return print_insn (pc, info);
 }

相关内容