LLVM を使用してモジュールから「純粋な」マシン コードを生成する方法はありますか?
つまり、モジュールがあり、MachO または Darwin オブジェクト ヘッダーを使用せずに x86 オペコードのみを取得したい (可能であれば、それらを特定のベース アドレスに再配置する)。
LLVM を使用してモジュールから「純粋な」マシン コードを生成する方法はありますか?
つまり、モジュールがあり、MachO または Darwin オブジェクト ヘッダーを使用せずに x86 オペコードのみを取得したい (可能であれば、それらを特定のベース アドレスに再配置する)。
objdump を探していると思います。使用するobjdump -d your_executable > dump_file
そのようなことを行う「標準的な」方法は、実行可能ファイルをビルドしてから、必要に応じて生のビットを抽出することです。http://www.bravegnu.org/gnu-eprog/hello-arm.htmlのようなもの。
別の方法は、LLVM JIT API を使用することです。ただし、この方法で LLVM を使用する方法を示す適切なドキュメントやサンプル コードはありません。おそらく、ClangExpressionParser::PrepareForExecution が lldb でどのように機能するかを見てみましょう ( http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Expression/ClangExpressionParser.cpp?revision=161559&view=markup )。