8

x86 アセンブリ ソース コードを LLVM 人間が判読できる .ll ファイル (別名 LLVM アセンブリ言語) に変換する必要があります。これどうやってするの?直接的な解決策がない場合、できるだけ少ない労力で LLVM インフラストラクチャ内に実装することは可能でしょうか?

私が探している解決策は、.s ファイルを .ll 表現に変換するある種のllcの対応物でなければならないと思います。

4

1 に答える 1

8

このトピックについてさらに詳しい情報を求めている人のために、Web で見つけた現在進行中のプロジェクト ( http://dslab.epfl.ch/proj/s2e ) に関する情報を共有したいと思います。プロジェクトには次の 2 つのコンポーネントがあります。

  1. x86マシン コードを LLVM IR に動的に変換するための x86-to-LLVM バックエンド
  2. インライン x86 アセンブリを LLVM IR に変換できる、x86 バイナリの静的分析用のRevGenツール

これがRevGen のプロトタイプです。RevGen は x86 バイナリを入力として受け取り、同等の LLVM モジュールを 3 つのステップで出力します。まず、RevGen はすべての実行可能なコード ブロックを探し、それらを LLVM 変換ブロックに変換します。次に、カバーする変換ブロックがなくなると、RevGen はそれらを基本ブロックに変換し、元のバイナリの制御フロー グラフを LLVM 形式で再構築します。3 番目に、RevGen は外部関数呼び出しを解決して、最終的な LLVM モジュールを構築します。動的解析では、最後のステップで LLVM モジュールを、LLVM モジュールの実行を可能にするランタイム ライブラリにリンクします。

于 2012-01-30T06:02:25.050 に答える