スタックポインタとサブルーチン呼出しとは?すたっくぽいんたとさぶるーちんよびだし
スタックポインタは、主記憶上のスタック領域の現在位置を保持する専用レジスタ。サブルーチンを呼ぶときに戻り番地とレジスタの内容を積み、復帰時に取り出す。この積み下ろしがあるおかげで、呼出しの入れ子・再帰呼出し・割込みの多重受付が成り立つ。
最終更新:2026-10-06
ネットワークSPを最短で暗記・合格する →背景
戻り番地を1か所だけに覚える方式では、呼出しの入れ子も割込みの多重化もできない。後入れ先出しの領域を用意し、位置だけをレジスタで指すようにしたことで、深さに制限のない入れ子が可能になった。ネットワーク機器のファームウェアが、受信割込みを処理しながら他の処理を進められるのもこの構造による。
具体例
CALL命令が戻り番地を積んでスタックポインタを進め、RETURN命令が取り出してプログラムカウンタへ戻す。局所変数も同じ領域に取るため、深い再帰や大きな配列でスタックがあふれる。戻り番地を書き換えるバッファオーバフローが機器の乗っ取りにつながるのも、この領域の構造を突くためである。
試験での引っ掛け
後入れ先出しのデータ構造そのものの話と、その位置を指すレジスタの話は別で、問題文がどちらを指しているかを読み違えやすい。番地の増減も注意点で、多くの実装では上位アドレスから下位へ向かって伸びるため、積むほど値が減る。「積めばアドレスが増える」と思い込むと計算問題を落とす。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。