前回の「第五話:スタックとLIFO、だから何?(怒)」はスタック領域の意味の分からなさにキレて終わったわけですが、今回はスタック領域の使われ方について触れたいと思います。 第五話でも書いた通り、スタック領域は変数などの値の一時的な格納場所です。枕詞として、各関数ごとに場所が違う、というのもつきます。 例えばこのシリーズで出てくるmain_sub.exeのスタック領域は以下のようなイメージです。こんな風に分けておくことで、他の関数のことは気にせずに変数の値を入れ替えることができるわけですね。 EBP ベースポインタでは、スタック領域はどうやって各関数に分けるのか?ここで登場するのがEBP、ベースポインタです。 ベースポインタは、平たく言うと「今実行中の関数が使用しているスタック領域の底」です。底だからベースね。先ほどの図で説明するとこんな感じです。 このベースポインタは当然各関数ごとに変わる
![第六話:EBPとESP、スタック領域の使われ方|トリコロールな猫](https://cdn-ak-scissors.b.st-hatena.com/image/square/87f672b5e32d3d3fc44c2918bde8ea09f93c6d22/height=288;version=1;width=512/https%3A%2F%2Fassets.st-note.com%2Fproduction%2Fuploads%2Fimages%2F454750%2Fprofile_dc1591ae6427932c07b982f3129a8b31.png%3Ffit%3Dbounds%26format%3Djpeg%26quality%3D85%26width%3D330)