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 らしくなるぞっと。