2010年03月

2010年03月31日

LLVM の JIT API を使うと、関数を返す(作る)関数が書けます。

肝は ExecutionEngine の getPointerToFunction() API で、JIT 済みの関数(コード)へのポインタを取得できます。

続きを読む

2010年03月29日

JIT の API を見ていきます。

ざっと考えてみると、最低限プログラムを実行するためには、以下のような項目が必要だと考えられます。

  • 初期化、終了処理
  • コンパイル単位 (モジュール)
    • 関数定義
        • 式(変数、定数、関数呼び出しなど)
  • プログラムの実行、結果の取得
続きを読む

2010年03月25日

LLVM を利用しているプロジェクトとしては MacRuby が有名ですが、他にも LLVM の JIT を利用しているプロジェクトはたくさん存在するようです。

The LLVM Compiler Infrastructure: Projects built with LLVM

では、具体的には、どのようにすれば LLVM の JIT が利用できるのでしょうか ?

続きを読む

2010年03月23日

ガベージコレクションのアルゴリズムと実装

面白そうなので購入しようと思っていたところ、タイムリーなことに、共著者の 1 人、中村成洋(twitter@nari3)さんと秀和システム様のご好意により、(会社にではなく個人的に)献本していただきました。ありがとうございます。

「ガベージコレクションのアルゴリズムと実装」という本を書きました。 - I am Cruby!

いま私は「プログラマのための文字コード技術入門」という本を読み進めているので、GC 本に取り掛かれるのはもう少し先になると思いますが、じっくり読ませていただこうと思います。
(KMC 社内でも、koba さんは既に購入済みとのことですし、他にも何人か興味を持ったようです。社長も「GC で一冊の本になるとはすごいですね。確かに奥が深いテーマですし、現代のプログラミング言語にもはや GC は不可欠ですしね。」のようなことを言ってました。)

パラパラとめくり、興味があるところをざっと眺めてみたのですが、非常にしっかり書かれているという印象です。入門書は数多くあれど、このような大部で網羅的な専門書が、翻訳ではなく日本人の著者たちによって書かれたというのは非常に貴重なことだと思います。Android の DarvikVM GC の実装解説など、旬な話題も豊富に扱われています。

また、5 月にこの本の読書会が大阪であり、中村さんも来られる(?)そうなので、参加しようと考えています。

ガベージコレクションのアルゴリズムと実装読書会

2010年03月19日

今回はDebianのソースパッケージのビルドスクリプトの中に使われていた小技を紹介します。

続きを読む

2010年03月17日

GCC のミドルエンド(最適化パス)とバックエンド(コード生成)に手を加えることにより、LLVM target をサポートしているのが、llvm-gcc です。

DragonEgg は、GCC 本体には手を加えずに、GCC 4.5 から入る plugin アーキテクチャによって、同様のことを実現し、llvm-gcc の置き換えを目指しているプロジェクトです。

既にブートストラップが可能なほどの完成度に到達しているとのことです。

DragonEgg - Using LLVM as a GCC backend

ただし、現状では GCC 4.5 本体への patch が必要で、Linux と Darwin 上でしか動かないようです。
(そもそも現状の GCC plugin って、Windows 上で動作するのでしょうか ? 追々確認してみます。)
今後に期待して、見守って行きたいと思います。

続きを読む

2010年03月11日

前回は Clang フロントエンドだけをビルドしました。

今回は LLVM もビルドして、実際に使ってみます。とはいっても、前回と同様に LLVM.sln を開いて、ALL_BUILD するだけです。時間がかかるかなと思って前回は試さなかったのですが、10 分もかかりませんでした。

lli.exe (LLVM 仮想マシン本体。JVM の java コマンドのようなもの)、llc.exe (ネイティブアセンブリコードへのトランスレータ) の他に、llvm-as.exe や llvm-ld.exe、llvm-nm.exe など、おなじみの binutils ライクなコマンド群が生成されます。
続きを読む

2010年03月09日

Clang (クラン(グ)) は、C/C++/Objective-C のコンパイラフロントエンドです。バックエンドに LLVM (Low-Level Virtual machine) を使います。(GCC をバックエンド(アセンブラ & リンカ代わり) として使い、通常の実行形式を生成することもできます。逆に、GCC のミドルエンド以降を LLVM 向けに改造した llvm-gcc というフロントエンドも存在します。)

ライセンスが BSD ライク なので、FreeBSD が Clgan で GCC を置き換えようとする動きがあったりと、徐々に注目を集めています。

Getting Started: Building and Running Clang を見る限り、Windows 上では VisualStudio 2005/2008 でビルドできるそうなので、さっそく試してみました。

続きを読む

2010年03月05日

CELFテクニカルジャンボリーでQEMUの話をさせていただきます。
組み込みシステムのクロス開発で実ボードの他にQEMUを活用しましょうという話です。
こちらにその発表資料を掲載します。
続きを読む

2010年03月03日

今回はQEMUにデバッガをつなぐ話をします。

  • QEMUそのものをgdbで追いかける
  • QEMU上の仮想マシンにgdbをつなぐ
  • QEMUそのものとその上の仮想マシンを同時に2つのgdbで追いかける
続きを読む

2010年03月01日

AndroidのエミュレータにQEMUが使われているのはご存知のことでしょう。

今回はこれまでの経験をいかしてAndroidのエミュレータに改造を加えてNFSroot化してみます。

続きを読む

記事検索
最新コメント
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

QRコード
QRコード