プロセッサのスタック

プログラムにおいて、スタックは必須の仕組みであり、プロセッサは、メインメモリ上でスタックを利用できるようになっています。

プロセッサのスタックは、スタック用の特殊なアドレスレジスタ(スタックポインタ)を利用して、以下のように実現されています。

プロセッサのスタックのPush

プロセッサのスタックにおいて、Pushは、以下の流れで実現されています。

1. データAをPushすると、スタックポインタの値からPushするデータのバイト数を引いたメモリアドレスにデータAが書き込まれる。

2. データAが4バイトであれば、スタックポインタの値から4が引かれる。

3. 続いて、データBをPushすると、スタックポインタの値からPushするデータのバイト数を引いたメモリアドレスにデータBが書き込まれる。

4. データBが2バイトであれば、スタックポインタの値から2が引かれる。

複数バイトのデータの読み書きの仕組みに関しては、「メモリアドレスによる複数バイトのデジタルデータへのアクセス」を参照してください。

プロセッサのスタックのPop

プロセッサのスタックにおいて、Popは、以下の流れで実現されています。

1. 上記のPushの流れに従って、4バイトのデータAと2バイトのデータBがPushされているとする。

2. 2バイトを指定してPopすると、スタックポインタが示すメモリアドレスから2バイト分のデータが取り出される。そして、このデータがデータBである。

3. スタックポインタの値に2が加算される。

4. 続いて、4バイトを指定してPopすると、スタックポインタが示すメモリアドレスから4バイト分のデータが取り出される。そして、このデータがデータAである。

5. スタックポインタの値に4が加算される。

複数バイトのデータの読み書きの仕組みに関しては、「メモリアドレスによる複数バイトのデジタルデータへのアクセス」を参照してください。