OSX10.6でx86_64に分解します(ただし_intel_ syntaxを使用)
質問
私は知っています otool -tv
, 、しかし、私はむしろ使用したいです インテル AT&TSではなく構文、主に本を簡単にフォローし、何千ものものを見る必要はありません %
'砂 $
's。
また、私が見つけるかもしれない場所へのヒントも感謝しています gdb
'の構成ファイル。
編集:私は忘れていました:私は64ビットプロセッサを実行していますが、32ビットアセンブリに分解することも可能かどうか疑問に思っていましたか?それだけでなく、OSXはします gdb
's list
コマンドは標準とは異なる方法で動作します GNU
バージョン?
本当にありがとう!
(また、C-> MIPSから少し分解者を見つける可能性がある場合、それは一緒に遊ぶのがとても楽しいでしょう。しかし、必要ではありません!)
解決
2番目の質問に答えるために、コードが64ビットと32ビットの両方で脂肪バイナリにコンパイルされている場合、使用できます otool -arch i386 -tv
バイナリの32ビットスライスを分解する。 otool -arch x86_64 -tv
64ビットの部分を与えます(Snowleopardでは、これもデフォルトの動作です。 -arch
フラグが渡されます)。
また、OtoolはIntel構文をサポートしていませんが、GDB(set disassembly-flavor intel
)およびxcode(設定 - >デバッグ - >分解スタイル)は行います。
他のヒント
(これは古い質問であることは知っていますが、検索エンジンを通じてここに来る人々に更新された答えを提供したいと思います)。
MacOSの最近のバージョン(私は10.14.5を実行しています)で、 objdump
コマンドが利用可能です。これはLLVMに基づいており、 いいえ GNUプロジェクトからのもの。 Intel構文を使用して分解する(非表示の)オプションを提供します。例えば、 /bin/echo
次のように分解することができます:
objdump -disassemble -x86-asm-syntax=intel /bin/echo
と objdump あなたは分解することができます -d -M intel
, 、そしてどうやら -m
アーキテクチャを指定するために使用できます。
gdbの場合、.gdbinitファイルで、追加してください。
分解flavor intelを設定します
その後、GDBのデフォルトの構文になります。
A2iを使用して、AT&TからIntel構文に翻訳できます。 http://membres.lycos.fr/placr/a2i.html