タグ

2010年11月15日のブックマーク (1件)

  • スタックフレーム | bnezの日記 | スラド

    G7氏のコメントより、「Schemeの実装におけるスタックフレーム(Draft)」について。サブルーチン呼び出し時の呼び出す側と呼び出される側との情報のやり取りを仲介する、スタックフレームのお話。 C言語の関数呼び出しでは、引数でも返り値でも扱えるものは値渡しのみである(Cにはポインタ渡しというものがあるが、これはプログラマが変数の位置情報を明示的にポインタに変換してから値として渡すものなので、処理系から見れば値渡しの一種である)。受け渡し時に扱うものが値渡しだけなので、スタックフレームも値渡し以上のことはできなくても良い構成になっている。「やりたきゃプログラマ自身の手で明示的にポインタ渡ししてね」というスタンスだ。 でもこのスタンスは、例えばクロージャのように値渡しだけでは実現できない機能には不十分だ。処理系がいちいち変数ごとに暗黙にポインタ渡しで置き換えればどうにか動くものを実現できる

    yugui
    yugui 2010/11/15