2010年04月08日
LLVM をバックエンドに使用する CPU シミュレータライブラリ libcpu
私が LLVM を調査しているのは、Multi-Stage Optimization や直接 LLVM を iPhone のように組み込みソフトウェア開発で利用したいというよりも、
(1) C/C++ プログラムの静的解析に使えそう
(2) CPU シミュレータのバックエンドとして使えそう
(デバッガに組み込んだり、QEMU の TCG を置き換えたりできるのでは ?)
などの動機があったわけですが、(2) の方は既にプロジェクトが存在していました。
http://www.libcpu.org/wiki/index.php/Main_Page
twitter で mjt さんに教えていただきました。 (それ以前から mjt さんの日記で存在は知っていたのですが、LLVM を使っていたということは頭から抜け落ちていました。)
libcpu の面白い点として、リンク先の mjt さんの日記にもあるのですが、独自の CPU 仕様記述から CPU シミュレータの自動生成を (将来的には) 目指しているという点があります。あまり開発は活発では無い感じですが、今後に期待したいところです。
また、QEMU の TCG API を LLVM で置き換えるという方も、今ちょっと検索してみたところ、llvm-qemu - Backend for QEMU using LLVM components. というプロジェクトが存在していました。
http://code.google.com/p/llvm-qemu/
2007 年の GSoC ということは、当時はまだ QEMU 0.10.0 は出てないので、TCG ではなく dyngen の時代だと思われます。こちらは開発が停止している感じですね。
(1) C/C++ プログラムの静的解析に使えそう
(2) CPU シミュレータのバックエンドとして使えそう
(デバッガに組み込んだり、QEMU の TCG を置き換えたりできるのでは ?)
などの動機があったわけですが、(2) の方は既にプロジェクトが存在していました。
http://www.libcpu.org/wiki/index.php/Main_Page
twitter で mjt さんに教えていただきました。 (それ以前から mjt さんの日記で存在は知っていたのですが、LLVM を使っていたということは頭から抜け落ちていました。)
libcpu の面白い点として、リンク先の mjt さんの日記にもあるのですが、独自の CPU 仕様記述から CPU シミュレータの自動生成を (将来的には) 目指しているという点があります。あまり開発は活発では無い感じですが、今後に期待したいところです。
また、QEMU の TCG API を LLVM で置き換えるという方も、今ちょっと検索してみたところ、llvm-qemu - Backend for QEMU using LLVM components. というプロジェクトが存在していました。
http://code.google.com/p/llvm-qemu/
2007 年の GSoC ということは、当時はまだ QEMU 0.10.0 は出てないので、TCG ではなく dyngen の時代だと思われます。こちらは開発が停止している感じですね。