andante

2037

1122

昨晩はVM変換器を一応完成させました関数からの戻りに不具合があって最適化に失敗していたちょっと手間取りましたがでも次の章から使う標準ライブラリを含めたプログラムを変換してみたら行数が$2^{15}$を超えたのでこれはもうCPUエミュレイタでは実行できませんこの先はVMエミュレイタでやるしかないのか……

と思ったけど関数呼び出しとかを共通化してやればもっと短くできるかもと思ったので今日はそれをやりましたそしたら43530行だったのが30565行まで縮んだのでやったー実行できるぞと思ったのだけど実行してみたらなんだか動作がおかしいですスタックポインタがメモリ領域を超えているいわゆるスタックオーヴァフローってやつだようなのでcallかreturnのどちらかが壊れているのだと思うのですが本に載ってるテストコードはちゃんと動いていたので謎です元のプログラムはさすがに巨大でデバッグできないのでなんか自分でテストコード書かないとだめかなああるいは元のプログラムをVMエミュレイタで確認するのもいいかも

あとは屍者の帝国原作を読んでいます三年前に初めて読んだときはまあ普通におもしろいなあとしか思ってなかったけどいま読み返すと円城塔らしさがガンガン出ててめっちゃ楽しい今夜読みおわると思うあーでもVM変換器いじるのとどっちやろうかそういえばVM変換器末尾再帰最適化とかもしてみたいよね再帰っていうかあれでしょ末尾の関数呼び出しでスタックそのままにしておくやつ


明日もまだ休みうれしい