kumaryu日記
2004-01-17 ゆ、雪じゃー!
_ めちゃ寒いんですけど。
起きたら3時。
外に出ると雪が。 ちょっと嬉しくて買い物に行こうかと思ったけど、節約続行中なので止めておく。 でも、家でじっとしてるより、雪の中を歩いてた方が寒い気はしないんだよな。
_ Dolphin Smalltalk
Squeakを使いこなすのも良いんだが、PocketSmalltalkは1.6a4が最新。 2.0系はSqueak版というだけで実は古い。
Dolphin Smalltalkの購入も考えてとりあえず試用してみる。
あにゃー。よくわからん。 PocketSmalltalkのソースを読み込む時にApplication Deploymentとかいうパッケージに依存してるぞ、とか言われるんだがそんなもの無い。 もしかしてPro版じゃなきゃだめ?と思ってPro版の試用キーも取ってみるけど、やっぱり無いや。
もしかして4.0じゃなきゃだめなのかもしれない。
ヘルプを読んでいると、単体起動のexeはProじゃなきゃ出来ないが、VMとイメージでの配布は可能らしい。イメージに開発用のクラスは当然含んじゃだめ。でもそれを取り除くツールはPro版にしか付いてないの?だめじゃん。
うーん、つらいなぁ。Pro版だとかなり高いし。
_ Ruby on Palm
PocketSmalltalkは仕方ないので現状で満足しておくことに。
で、やっぱりRubyを動かしたいなぁと。 Smalltalkもシンプルで良いんだけど、Rubyの方が便利。 でもRubyをPalmに移植するのは非常に困難なんだよな。
Rubyは機能豊富だし、Unix等で作られたやつだからファイルシステムとか標準入出力が当然になっている。 でもPalmにはどっちも無い。 そういうものを省こうにも、まずどうやれば省けるのすらわからん。省いたところでPalm用にconfig.hを作るのが大変だ。他にもいろいろ問題はあるだろう。
そこで思いついたのがRubyのVMを移植しようってこと。 最近はけっこうあるんだよねー。
YARV
拡張ライブラリとしてコンパイル出来るのね。でも変なところで失敗した。Ruby1.8.0じゃ駄目なのかもしれない。
とりあえずソースを見てみる。RubyのNodeを取得してそれをコンパイルしていくみたいだ。なるほど。それだと自力でパーサ書く必要ないんだね。
インストラクションセットのドキュメントを見てみるがちょっと意味不明。勉強が足りないらしい。 沢山あるがRubyのフルセットを動かすならこのくらいは必要ってことか。大変だなこりゃ。
bRuby
VMじゃないけど。Nodeあたりの取り扱いで参考になるかなと思ったので。
うーん、いまいちわからん。Rubyソースコード完全解説を買ったほうが良いのだろうか。
Carbone Ruby VM
Vmgenってのを使ったRubyVMらしい。 結構動いてるみたいだけど。
今はまだ試してない。こんど遊んでみよう。
_ Ruby on Palmその2
ここまで来て気付いたのだが、VMを作るのは大変だ。
そりゃゆくゆくは自分で作りたいが、今は全く知識の無い状態。 こんな状態で作ってもすぐ飽きちゃうな。
そんなこんなで思ったのが、PocketSmalltalkのVMを使うこと。 PSTのバイトコードをRubyスクリプトをコンパイルして吐き出してやれば良いのだ。
PSTのバイトコードは基本的な物しかないから、Rubyを網羅するのはとうてい無理。でも逆にその程度しか無いなら俺にも出来るんじゃない? Smalltalkで出来る分しか出来ないけど、今、PSTで普通に使えてるなら、まあなんとかなるはずだ。 しかもprimitiveを使えばある程度は簡単に拡張出来る。 それで物足りなくなってからでも全然遅くないだろう。
むしろそれで物足りなくなるくらいまで理解してからじゃないと、VM自作なんて無理な話だよ。
てことで、Rubyコンパイラを作ることに決定。
おおまかな手順は次のようにしよう。
- PSTの出すバイナリをディスアセンブルする。
- ディスアセンブルしたのをアセンブル出来るようにする。
- Rubyのパーサを書く。簡単なやつを。
- Rubyをパースしてコンパイル出来るようにする。
- クラスライブラリを書く。
うわー。 おおまか。