解決
LLVM を最初に試してみて、作業を進めてみました。 このチュートリアル 私はその可能性に非常に興奮しました。これを使用して、比較的簡単に JIT をアプリに構築できるという考えに興奮しました。
私は、その制限、安定性、パフォーマンスなどについて有益な意見を提供できるほど深くは調べていません。あらゆる点で優れていることは理解していますが、それは単なる伝聞です。
他のヒント
LLVMについて十分なことを言うことはできません。私が見た他のコンパイラプロジェクトと比較して、作業はとても簡単です。私はコンパイラーではありませんが、LLVMやclangの制限に不満を感じた場合、通常は簡単に飛び込んで変更できます。
私たち(Nate Begeman、私自身、および他の数人)は、コンパイラ設計の実際の経験がなくてもPPCバックエンドを作成しましたが、専門家でない人がアプローチできるほど単純に見えました。私たちはPPCアセンブリにかなり精通していましたが、余暇のうちの数週間でLLVM-gccがPPCコードを出力することに成功しました。間違いなく私が今までコンパイルした中で最も満足のいくHello Worldの1つです。
私は今何ヶ月もLLVMをオン/オフで遊んでいます。
全体として、私の経験は非常に前向きです。 LLVMはブリキでそれを言い、非常に使いやすいです。生成されたコードのパフォーマンスは素晴らしいです。私が書いたプログラムの1つは、単純な小さなBrainf * ckコンパイラで、テストしたコンパイラ(GCCを含む)の中で最も高速な実行可能ファイルを生成しました。
LLVMには2つのグリップしかありません。まず、例外を発生させるのではなく、何か問題が発生するたびにabort()を使用します。これは、LLVMから例外のすべての使用を削除しようとする作成者による意図的な設計決定でしたが、LLVMを使用するコンパイラをデバッグしようとするとOCamlからバックトレースを取得することができなくなります。ただし、ソースのどこでエラーが発生したのかについての手がかりはありません。第二に、LLVMのコンパイル済みライブラリは非常に大きい(20Mb)。これは、C ++の肥大化によるものと思われますが、コンパイルが非常に遅くなります。
編集:LLVMに関する私の仕事は、高性能で高レベルのガベージコレクション仮想マシンの作成に至りました。 こちらを無料でダウンロードし、対応するベンチマーク(すごい!)。 @Alex:BFコンパイラをできるだけ早く入手します。
ツールについて尋ねたところ、Eclipse CDT(Windows、Linux、およびMac)用のLLVMプラグインがあることに言及したいと思います。それはLLVMをIDEにうまく統合し、ユーザーはLLVMについて何も知る必要はありません。ビルドボタンを押すだけで、.bcファイルと実行可能ファイル(およびユーザーの目に見えないバックグラウンドの中間ファイル)を作成できます。
最新バージョンは、Eclipseの公式更新サイトから入手できます。 http://download.eclipse.org/releases / mars
「プログラミング言語」の下にあり、「C / C ++ LLVM-Family Compiler Build Support」という名前です。