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);
}