2013年12月12日木曜日

スタックポインタについて

ざっくりスタックポインタを調べてみた。

用語:
ベースポインタ:スタック領域の一番底

スタックの積み方

  • スタックポインタの演算タイミング
    • Full: 先に加減
    • Empty:後に加減
  • スタックポインタの進行方向
    • Descending:下降 利用するたびにSPが減算
    • Ascending:上昇 利用するたびにSPが加算される。
ほとんどのCPUについては、Full/Descending フル減算で実装されている。
ARMでは2*2=4パターンで実装が可能

  • ARMでは異なるソースファイル間での関数呼び出しなど全ての外部インタフェースに置いて、スタックを8バイト境界でアラインする必要がある。

関数呼び出しをする場合、呼び出し元がベースポインタの下に配置し、スタックを積んでいく。




  • 参考
    • http://hack.ninja-web.net/academy003-060.htm
    • http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204ij/Cacbgchh.html