スタックフレームは
末尾再帰を考えると、
+-------+ | local | +-------+ | local | +-------+ | arg | +-------+ | arg | +-------+ |retaddr| +-------+ | fp | +-------+
このほうがいいんじゃないか、と思ったんだけど、どうなんだろうか。
+-------+ | local | +-------+ | local | +-------+ | fp | +-------+ |retaddr| +-------+ | arg | +-------+ | arg | +-------+
こういう構造になってる理由は…push、callを直接使えるから…なんだけど、GCCの出したコード見てると、
- サイズ最適化しないと、引数pushとか使ってくれない
- スタックフレームの削除と、引数積んだのを戻す処理が別にある
ってなってんだよな…
だとしたら、末尾再帰やりやすい分、上のほうがいいんじゃ。