読者です 読者をやめる 読者になる 読者になる

レガシーコード生産ガイド

私に教えられることなら

Smalltalk風VM製作中

Smalltalk

1週間ほど帰省したんだけど、夜などにA Little SmalltalkやBluebookを参考にしつつSmalltalk「風」環境を目標にVMを作っていた。

github.com

ちなみに「風」としたのは、Smalltalk-80とか何かに準拠するわけじゃないよ、ということです。

スタックマシンなんだから当たり前なんだけど、途中で「これForthでやったやつだ!!」ってのが多くて面白かった。

今のとこ

  • JavaScript上で弱参照を作るためのオブジェクトメモリ風なものとGC(まだ発動条件は保留)
  • MethodContextやBytecodeオブジェクト

を生成できて、

  • 3 + 4
  • 5 factorial
  • ブロックの生成とvalueメッセージ送信

バイトコードで書けるようになった。

Smalltalkの魅力として自分が惹きつけられるとこはいくつか、いやいくつもあるんだけど、やっぱり一番はバイトコードインタプリタとか実装の一番下のとこだな。仕組みがゼロから作られていくのがワクワクする。

で、ここから先をどうするか悩んでいる。一番単純なのはJavaScriptで残りのバイトコード命令とSmalltalkバイトコードコンパイラを書いてしまうことなんだけど、どうせならjasjでマクロ使ったり、コンパイラSmalltalkで書いてセルフビルドできるようにしたい。フーム……

あと別日記で進めているECSの課題でアセンブラを作るので、どうせならForthでいろいろやろうかなと画策中。というわけでしばらくこれは庭いじりモード。

広告を非表示にする