質問: コンピュータの構成と設計を勉強しています。 プログラムの手続き中にレジスタのデータをスタックポインタにプッシュして、 手続きが終わったら、スタックされていた退避データをスタックからポップして、レジスタの変数に代入し、 プログラムカウンタ(PC)のアドレスから呼び出し元に戻るという理解で大丈夫でしょうか? また、スタックポインタというのはメモリ上で連続なアドレスでなければいけないのでしょうか? その場合、スタックポインタには最大で何バイトになるのでしょうか?
回答: 具体的なハードウエア(CPU)を想定しないと回答が難しいですが、 > > プログラムの手続き中にレジスタのデータをスタックポインタにプッシュして、 > > 手続きが終わったら、スタックされていた退避データをスタックからポップして、 > > レジスタの変数に代入し、 > > > その理解でよろしいかと思われます。 通常のCPUでは、サブルーチンのコール/リターンの呼び出しアドレス保存/復帰にもスタックが使用されますね > > スタックポインタというのはメモリ上で連続なアドレスでなければいけないのでしょうか? > > > 通常のスタックでは連続してないといけません スタックの使用量は、使用するサブルーチンで使用するスタックの量で決まりますね