15

Hotspotを使用するたびに-XX:+PrintAssembly、恐ろしい AT&T 構文を読まなければならないことに悩まされます。

Intel構文を使用するように指示する方法はありますか?

4

2 に答える 2

23

必要なのは、いくつかのオプションを dis-asm.h および binutils コードに解析することだけです

intel 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ます。GCCMakefileに渡すことで変更できます。-masm=intelそして、それが機能する場合は、今後、+PrintAssemblyIntel 構文アセンブリの出力を開始する必要があります。

ソースを取得し、ビルドし、最終的に分解作業を行うものを取得するための段階的な手順を次に示します。hsdis-arch.so

私はこれを自分で試していません。これが機能することを願っています:)

何も機能しない場合は、これでAT&T 構文に慣れるはずです:)

于 2012-02-21T09:26:25.190 に答える