15

每次我使用-XX:+PrintAssemblyHotspot 并且必须阅读可怕的 AT&T 语法时,它都会让我烦恼。

有没有办法告诉它使用英特尔语法?

4

2 回答 2

23

您只需将一些选项解析到 dis-asm.h 和 binutils 代码中

对于英特尔 Asm(我也更喜欢),只需添加以下内容

-XX:PrintAssemblyOptions=intel

如果您需要组合选项,请使用逗号,如下所示

-XX:PrintAssemblyOptions=intel,hsdis-help

任何未被识别为 hsdis 选项的内容都将输入反汇编程序,这些选项与您在列表中看到的选项相同

objdump --help

... <SNIP A lot of --help text %<> ...
The following i386/x86-64 specific disassembler options are supported for use
with the -M switch (multiple options should be separated by commas):
  x86-64      Disassemble in 64bit mode
  i386        Disassemble in 32bit mode
  i8086       Disassemble in 16bit mode
  att         Display instruction in AT&T syntax
  intel       Display instruction in Intel syntax
  att-mnemonic
              Display instruction in AT&T mnemonic
  intel-mnemonic
              Display instruction in Intel mnemonic
  addr64      Assume 64bit address size
  addr32      Assume 32bit address size
  addr16      Assume 16bit address size
  data32      Assume 32bit data size
  data16      Assume 16bit data size
  suffix      Always display instruction suffix in AT&T syntax
Report bugs to <http://www.sourceware.org/bugzilla/>.
于 2012-02-28T08:02:02.403 回答
3

我认为没有任何现有的方法可以做到这一点。但这就是我发现的 -hsdis. 您可以Makefile通过传递-masm=intel给 GCC 来更改。如果它有效,从现在开始,+PrintAssembly应该开始输出 Intel 语法汇编。

这是获取源代码、构建并最终获取执行反汇编工作的逐步过程!hsdis-arch.so

我自己没有试过这个。我希望你让它工作:)

如果没有任何效果,这应该会让您对AT&T 语法感到满意:)

于 2012-02-21T09:26:25.190 回答