スタックポインタとサブルーチン呼出しとは?すたっくぽいんたとさぶるーちんよびだし
スタックポインタとは、主記憶に置かれたスタック領域の先頭位置を保持する専用レジスタである。サブルーチンを呼び出すときは戻り番地やレジスタの内容をスタックへ積み、復帰時に取り出す。この後入れ先出しの構造があるおかげで、呼出しの入れ子や再帰、割込みの多重化が成り立つ。
最終更新:2026-10-06
ITサービスマネージャを最短で暗記・合格する →背景
サブルーチンから戻る先は、呼び出した場所によって毎回変わる。固定の場所に戻り番地を置く方式では、呼出しの中でさらに呼び出した瞬間に上書きされて戻れなくなる。積み上げて後から順に取り出す構造にすれば、入れ子の深さに関係なく正しい順で戻れる。割込みが多重にかかっても復帰できるのは同じ仕組みのおかげで、障害解析で読むスタックトレースはこの積み上がりを表示したものである。
具体例
CALL命令がプログラムカウンタの値をスタックへ積んでスタックポインタを進め、RET命令が取り出してPCへ戻す。関数の局所変数も同じ領域に取るため、終了条件を誤った再帰はスタック領域を食い潰して異常終了する。障害調査でスタックトレースの上から順に新しい呼出しが並ぶのは、この構造による。
試験での引っ掛け
データ構造としてのスタックの話と、プロセッサのレジスタであるスタックポインタの話を混ぜた選択肢に注意する。またスタックは上位アドレスから下位へ伸びる実装が多く、「積むとアドレスが増える」と決めつけると計算問題を落とす。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。