スタックポインタとは?すたっくぽいんた
スタックポインタとは、後入れ先出しで積まれるスタック領域の、いま有効な先頭位置を保持するレジスタ。関数呼出しの戻り番地、引数、ローカル変数、割込み時の退避データが、ここを基準に積み下ろしされる。RAMの限られた組込みでは、深さの見積りを誤ると隣の領域を壊して暴走する。
最終更新:2026-10-06
この語が出る過去問を解く →背景
関数の呼出しは入れ子になり、しかも深さは実行時にしか決まらない。戻り番地を固定の場所へ置く方式では、再帰も割込みの多重化も成り立たない。後入れ先出しの領域を1本用意し、その先頭位置だけをレジスタで持つ形にしたことで、呼出しの深さに上限を設けずに済むようになった。
具体例
多くのマイコンは特権用と非特権用で別のスタックポインタを持ち、割込み処理は専用スタックを使う。RTOSではタスクごとにスタック領域を確保し、コンテキストスイッチのたびにスタックポインタを差し替えることで各タスクの実行状態を保つ。
試験での引っ掛け
「次に積む位置」を指すのか「最後に積んだ位置」を指すのか、伸びる向きが上位側か下位側かはアーキテクチャごとに異なる。特定のCPUの動作を一般則と思い込むと、使用量の計算や境界チェックの向きを取り違える。プログラムカウンタとの役割の混同も狙われる。
関連用語
出た過去問
出典:平成28年度 春期 応用情報技術者試験 午前 問8(IPA)
CPUのスタックポインタが示すものはどれか。
正解:サブルーチン呼出し時に,戻り先アドレス及びレジスタの内容を格納するメモリのアドレス
要点:スタックポインタは退避データを積む位置を指す
スタックポインタは、スタック領域の先頭位置を保持するレジスタである。サブルーチン呼出しや割込みの際に戻り先アドレスやレジスタ内容を退避する場所を示す。
出典:令和2年度 10月試験 応用情報技術者試験 午前 問8(IPA)
CPUのスタックポインタが示すものとして、最も適切なものはどれか。
正解:サブルーチン呼出し時に、戻り先アドレス、レジスタの内容などを格納するメモリのアドレス
要点:スタックポインタはスタックの先頭アドレスを保持する
スタックポインタは、スタック領域の先頭(次に読み書きする位置)のアドレスを保持するレジスタである。サブルーチン呼出しや割込みの際に、戻り先アドレスやレジスタの内容を退避するのがこのスタック領域であり、その位置を示すのがスタックポインタである。
出典・参考
公式シラバスの2 コンピュータシステム > 1. プロセッサ > (5) プロセッサの構造と方式に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。