x86 アセンブリ ソース コードを LLVM 人間が判読できる .ll ファイル (別名 LLVM アセンブリ言語) に変換する必要があります。これどうやってするの?直接的な解決策がない場合、できるだけ少ない労力で LLVM インフラストラクチャ内に実装することは可能でしょうか?
私が探している解決策は、.s ファイルを .ll 表現に変換するある種のllcの対応物でなければならないと思います。
x86 アセンブリ ソース コードを LLVM 人間が判読できる .ll ファイル (別名 LLVM アセンブリ言語) に変換する必要があります。これどうやってするの?直接的な解決策がない場合、できるだけ少ない労力で LLVM インフラストラクチャ内に実装することは可能でしょうか?
私が探している解決策は、.s ファイルを .ll 表現に変換するある種のllcの対応物でなければならないと思います。
このトピックについてさらに詳しい情報を求めている人のために、Web で見つけた現在進行中のプロジェクト ( http://dslab.epfl.ch/proj/s2e ) に関する情報を共有したいと思います。プロジェクトには次の 2 つのコンポーネントがあります。
これがRevGen のプロトタイプです。RevGen は x86 バイナリを入力として受け取り、同等の LLVM モジュールを 3 つのステップで出力します。まず、RevGen はすべての実行可能なコード ブロックを探し、それらを LLVM 変換ブロックに変換します。次に、カバーする変換ブロックがなくなると、RevGen はそれらを基本ブロックに変換し、元のバイナリの制御フロー グラフを LLVM 形式で再構築します。3 番目に、RevGen は外部関数呼び出しを解決して、最終的な LLVM モジュールを構築します。動的解析では、最後のステップで LLVM モジュールを、LLVM モジュールの実行を可能にするランタイム ライブラリにリンクします。