2012-02-18 5 views
13

ホットスポットで-XX:+PrintAssemblyを使用し、恐ろしいAT & T構文を読まなければならないたびに、私は気になります。Hotspot7 hsdis PrintAssembly Intel構文

インテルの構文を使用する方法はありますか?

+0

から一覧表示され、同じものですか? –

+0

@パヴァン私が理解しているように、すべてのOSに1つのバイナリがありましたので、クロスプラットフォームの作業方法を得ることができると期待していました。ほとんどの場合openSUSEとWindows。残念ながらあなたの答えが示しているように - 私がコンパイル時にそのようなオプションを渡すことができれば、それを行うためのより良い方法はないのでしょうか?それを試みます。 – Voo

+0

ウィンドウの場合、デフォルトでintel構文を取得する必要があります! –

答えて

17

必要なのは、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/>. 
+1

うわー、それはちょうどいいです!彼らは実際にどこかで言及することができますが、それは 'PrintAssemblyOptions'でなければならないことを知っていても、私はgoogleでそのドキュメントを見つけることはできません。 – Voo

2

私はこれを行うための既存の方法はないと思います。しかし、これは私が見つけたものです。 Herehsdisの出典です。 -masm=intelをGCCに渡してMakefileを変更することができます。そしてそれがうまくいくならば、+PrintAssemblyはインテル構文アセンブリの出力を開始するはずです。

ソースを取得して最終的に分解作業を行うものであるhsdis-arch.soを取得するのはstep by step procedureです!

私はこれを自分で試していません。私はあなたがこの作業を取得たい:)

何も動作した場合、これはAT&T Syntaxとあなたが快適にする必要があります:)

+0

ありがとうございますが、どこに '-masm = intel'をmakefileに追加するのですか?私はちょうど 'CFLAGS + = -masm = intel'をしましたが、それはそのトリックをしません。 – Voo

+1

'CFLAGS'は適切な場所ですが、なぜあなたのために働いていないのか分かりません。 'hsdis-arch.so'が生成されていますか?このデバッグオプションを追加した後の違いは何ですか? –

+0

soファイルはうまく生成されますが、出力はそのままです(つまりAT&T)。エラーメッセージもありません。それが重要なのなら、はい、私は自分の道に鼻水をインストールしていますか? – Voo