GIMPLEは完全にダンプして正しく再ロードするのが難しいバイナリ形式です。 LLVMと比較して、LLVM IRはで、を通常のファイル(そのファイルのテキスト形式とバイナリ形式はそれぞれ別の形式に完全に変換可能)にダンプ可能で再ロード可能に設計されていました。あなたはLLVMIRを発射するために前進することができ、次にいくつかの最適化を伴うopt
プログラムを開始し、その後、他のものを使用して、位相の間にLLVM IRビットコードファイルが存在する。そして、あなたはIRビットコードからネイティブコードへのコード生成を開始できます(理論的には、同じプラットフォームではなく、PNaClプロジェクトを参照してください)。
GCCの内部表現をダンプ/リロードするプロジェクトがあります。このようなプロジェクトはgccと商用コンパイラツールを統合するために作成されたものです。著者は商用コードとgccをリンクすることはできません。なぜなら、gccはVIRAL(リンクされたコードに反商用GPLを感染させるからです)だからです。だから、著者はGIMPLEのGPLダンパー/ローダーをいくつかの外部(xml)フォーマットに書きました。独自のツールはこのXMLを読み込んで同じフォーマットの他のXMLに変換してから、GPLツールを使用して再読み込みされました。
より新しいgccでは、プラグインを書くオプションがあります。これはGPLの点でis VIRAL (23.2.1)です。プラグインはプログラムのメモリ内表現で動作し、外部ファイル経由でGIMPLEのダンプ/リロードの問題は発生しません。 MELT(Lisp)やGCC Python(Python)などのユーザ提供のプログラムを使用するプラグインがいくつかあります。 gccプラグインのいくつかのリストis there
(+1)どちらも答えはありませんが、同じことをしたいです。 – umlcat
[this](http://gcc.gnu.org/wiki/GimpleFrontEnd)を見たことがありますか? –