質問: メモリーにも「スタック」という領域はあるの? 「コンピュータはなぜ動くのか 知っておきたいハードウエア&ソフトウエアの基礎知識」書籍内のp61のところにある「表3.1 z80 cpuの主な命令」の表の「メモリーとcpuの入出力命令」の欄に 「push reg:regをスタックに書き込む」 「pop reg:スタックからregに読みだす」 というのがあるのですが、これはつまりメモリーにも「スタック」領域はあるということなんでしょうか? 「スタック」と聞くと、cpuのレジスタ(記憶する箇所)のことをイメージしてしまい、メモリにはそんな領域はないと思われますが、メモリーにも「スタック」領域はあるのでしょうか? わかりやすく教えてください。 よろしくお願いいたします。
回答: pop は レジスタの内容やcall などの戻ってくるアドレスを メモリ上に 書き込み スタックポインタを インクルメンタルします push は スタックポインタを ありがとうございます。あらわされた メモリをレジスタに読み込みます メモリーにはプログラム領域とデータ領域と スタック領域の区別はありません 高級言語で書かれたものは 言語上でメモリ管理されています またos上下も管理してますので z80の時代のように簡単には抜けませんが 使い方を間違えれば暴走します 似たようなものに ぬるぽ https://ja.wikipedia.org/wiki/%e3%81%ac%e3%82%8b%e3%81%bd 空のポインターにアクセスしようとした ハンドルの例外 https://social.msdn.microsoft.com/forums/vstudio/ja-jp/c01058c7-4cec-439a-be64-bd37223d7468/12495125311248912523123731242812390123561239412356203632280612?forum=vcgeneralja メモリーリーク https://ja.wikipedia.org/wiki/%e3%83%a1%e3%83%a2%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%af などが その応用 8086 での pop/push https://vanya.jp.net/os/x86call/#pushpop 最新のi7 なども 8086系の進化来たものなので 同じことが起こります