home Glamenv-Septzen(ぐらめぬ・ぜぷつぇん)(archive)

日記/2009/12/08/x86のPUSHはスタックの低位方向に進む

作成日: 2009-12-08 10:20:42   /   last updated at: 2009-12-08 10:36:48
カテゴリ: Assembler 

すこしあやふやになったので確認。スタックのPUSHでアドレスの大きい方(高位)に進むのか、小さい方(低位)に進むのかは実装依存。

x86の場合は、PUSHするとアドレスの小さい方(低位)に進む。つまり、PUSHする度にESPの値は小さくなっていく。アドレス0x0の方向へ向かってESPの値は小さくなっていく。

スタックが「伸びる」とか「縮む」とか書くと印象によって逆方向になってしまうので注意。
PUSHすると「伸びる」んじゃないか、とかPOPすると「縮む」んじゃないか、というイメージがある。
しかし書籍によっては、x86に限定して、PUSHすると0x0の方向に進むので「縮む」、POPするとアドレスが大きくなるので「伸びる」と表記するものもあった。

「伸びる」「縮む」ではなくて「進む」「戻る」の方が良いかな?
「x86ではPUSHするとアドレス低位方向にスタックが伸びる」
「x86ではPUSHするとアドレス低位方向にスタックが進む」
・・・あんまり変わらないか・・・。

original url: https://www.glamenv-septzen.net/view/514