2010年03月23日
面白そうなので購入しようと思っていたところ、タイムリーなことに、共著者の 1 人、中村成洋(twitter@nari3)さんと秀和システム様のご好意により、(会社にではなく個人的に)献本していただきました。ありがとうございます。
「ガベージコレクションのアルゴリズムと実装」という本を書きました。 - I am Cruby!
いま私は「プログラマのための文字コード技術入門」という本を読み進めているので、GC 本に取り掛かれるのはもう少し先になると思いますが、じっくり読ませていただこうと思います。
(KMC 社内でも、koba さんは既に購入済みとのことですし、他にも何人か興味を持ったようです。社長も「GC で一冊の本になるとはすごいですね。確かに奥が深いテーマですし、現代のプログラミング言語にもはや GC は不可欠ですしね。」のようなことを言ってました。)
パラパラとめくり、興味があるところをざっと眺めてみたのですが、非常にしっかり書かれているという印象です。入門書は数多くあれど、このような大部で網羅的な専門書が、翻訳ではなく日本人の著者たちによって書かれたというのは非常に貴重なことだと思います。Android の DarvikVM GC の実装解説など、旬な話題も豊富に扱われています。
また、5 月にこの本の読書会が大阪であり、中村さんも来られる(?)そうなので、参加しようと考えています。
ガベージコレクションのアルゴリズムと実装読書会
2010年03月19日
2010年03月17日
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月15日
続きを読む
2010年03月11日
今回は 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日
ライセンスが BSD ライク なので、FreeBSD が Clgan で GCC を置き換えようとする動きがあったりと、徐々に注目を集めています。
Getting Started: Building and Running Clang を見る限り、Windows 上では VisualStudio 2005/2008 でビルドできるそうなので、さっそく試してみました。
続きを読む
2010年03月05日
2010年03月03日
今回はQEMUにデバッガをつなぐ話をします。
- QEMUそのものをgdbで追いかける
- QEMU上の仮想マシンにgdbをつなぐ
- QEMUそのものとその上の仮想マシンを同時に2つのgdbで追いかける
2010年03月01日
2010年02月25日
QEMUの上でDebianなどが動いていると、apt-get で簡単にコンパイラなどもインストールすることができます。しかし、そこで実際にビルドを行うととんでもなく時間がかかります。一晩かけても終わらないこともあります。
QEMUには今まで紹介してきたような、システム全体をエミュレートするものの他に、Linuxのユーザーモードのみをエミュレートするものがあります。今回はユーザーモードエミュレーションを紹介します。
ユーザーモードエミュレーションを利用することでビルドにかかる時間を1/10に短縮することができました。
2010年02月23日
ここまでのQEMUの記事のリンク集です。
なお、CELFテクニカルジャンボリーにて、時間をいただきましたので、このあたりについて話をさせていただきます。
(3月5日 中野サンプラザ 入場無料) よろしければご参加ください。
2010年02月19日
2010年02月17日
前回nfsからブートできるようにしたことで、ユーザーランドとカーネルの依存性が少なくなりました。そこでカーネルを最新のものに差し替えてみます。
さらに、qemuの仮想ハードウェアをARM926のversatileからARM11MPcoreのRealview_EBボードにさしかえて、SMPでの動作を見てみます。
2010年02月15日
大昔、まだハードディスクが高価だったころ、ディスクレスワークステーションというのがありました。自前でハードディスクを持たずに、ルートディレクトリから全てNFSでマウントするというものです。
この技術はいまでもUnix系OSのDNAに埋め込まれていて、簡単なセットアップでそれを行うことができます。組み込みLinuxの開発でこれを応用すると3つのよい点があります。
1. ターゲット内のファイルにホストからいつでも自由に簡単にアクセスできる。
2. ターゲットにストレージ系のデバイスドライバがまだ実装できていない状態でもカーネルを起動することができる。
3. ターゲットのディスクの空き容量を気にしなくてすむ。
QEMU上のARMのDebianでこれをやってみたので紹介します。
2010年02月09日
$ cat ifdef.c
#if UNDEFINED_SYMBOL
void f(void){}
#endif
$ gcc -Wall -c ifdef.c
-Wundef オプションにより、警告が出るようになります。
$ gcc -Wall -Wundef -c ifdef.c続きを読む
ifdef.c:1:5: warning: "UNDEFINED_SYMBOL" is not defined