TextualOutputPort の実装終わった - Scheme VM を書く
TextualOutputPort の C++ 側の実装が終わった。
内部的に使う display や putDatum はすべて stdout をバイナリポートとして持つ TextualOutputPort を利用して行うように。
Codec も UTF-8 のもの書いた。(エラー処理してないけど)。
やっとオブジェクトシステムの見直しと出力系が終わったので VM インストラクションの実装を再開。
今日実装したのは
- NUMBER_ADD
- NUMBER_SUB
- CONS
- CAR
- ENTER
- LEAVE
- LET_FRAME
- DISPLAY(display closureの方)
- NUMBER_GE
LET_FRAME や DISPLAY などが正しく動いているので山場は越えたかな。
スタックオーバーフローするバグがあって tail call optimize がうまくいってないと決めつけてデバッグして失敗した。
NUMBER_ADD の時に sp-- するの忘れてただけだった。
明日もひたすらインストラクションを実装していっていよいよ Scheme らしくなるぞっと。