K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]


新規投稿 | 開設者ホームページへ戻る | ヘルプ


[1884] Re:crowbar_book_ver4について
返信


投稿者:(ぱ)こと管理人
2013/12/02 21:13:12

Link:
>たぶんですけど、直すのに影響があんまり出ないやり方があります。crowbarスタックを
>一つの配列ではなく、複数の配列をリンクするによりスタックの拡張ができます。
>スタック拡張する場合には新たな配列をmalloc()して、それをもとにあったスタックと
>リンクして、それでrealloc()を回避できますますね。これが「chunked stack」とも
>言います。

全体を確認していませんが、ざっと見てみると、現状のcrowbarの実装だと
スタック操作がpush_value()とかpeek_stack()にカプセル化されているので、push_value()のところで新たにmalloc()してリンクリスト等で管理し、
peek_stack()にて、もし配列の下端より下の領域を参照されたらひとつ前の
領域から算出して返す、ということはできそうですね……

実のところ同じ現象はDiksamにもあるはずで、こちらはVMの中で直接参照して
います。ただし、Diksamは関数呼び出し時にスタックの拡張があるかどうかを
判定していますし、ひとつの関数の実行中だけ連続したスタック領域が見えれば
十分でしょうから、なんとかなるように思います。
(すみません、ちょっとすぐには直せませんが)

ご意見ありがとうございました。
[ この投稿を含むスレッドを表示] [ この投稿を削除]



[ より新しい投稿] [ より古い投稿]