応用情報技術者 2020年 秋期 午前2 問08
問題文
CPUのスタックポインタが示すものとして、最も適切なものはどれか。
選択肢
ア:サブルーチン呼出し時に、 戻り先アドレス、 レジスタの内容などを格納するメモリのアドレス(正解)
イ:次に読み出す機械語命令が格納されているアドレス
ウ:メモリから読み出された機械語命令
エ:割込みの許可状態、 及び条件分岐の判断に必要な演算結果の状態
CPUのスタックポインタが示すもの【午前2 解説】
要点まとめ
- 結論:スタックポインタはサブルーチン呼出し時の戻り先アドレスやレジスタ内容を格納するメモリのアドレスを指します。
- 根拠:CPUは関数呼び出し時に現在の実行状態を保存し、戻る際に復元するためスタックを利用します。
- 差がつくポイント:プログラムカウンタや割込み状態と混同せず、スタックポインタの役割を正確に理解することが重要です。
正解の理由
ア: サブルーチン呼出し時に、戻り先アドレス、レジスタの内容などを格納するメモリのアドレスが正解です。
スタックポインタはCPU内部のレジスタで、スタック領域の現在のトップ(最上位)アドレスを示します。サブルーチン呼出し時に戻り先アドレスやレジスタの内容をスタックに保存し、処理終了後に復元するために使われます。
スタックポインタはCPU内部のレジスタで、スタック領域の現在のトップ(最上位)アドレスを示します。サブルーチン呼出し時に戻り先アドレスやレジスタの内容をスタックに保存し、処理終了後に復元するために使われます。
よくある誤解
スタックポインタは「次に実行する命令のアドレス」や「割込み許可状態」を示すものではありません。これらはプログラムカウンタやフラグレジスタの役割です。
解法ステップ
- CPUの基本構成とレジスタの役割を確認する。
- スタックポインタが指す「スタック」の意味を理解する。
- サブルーチン呼出し時の処理の流れ(戻り先アドレスの保存)をイメージする。
- 選択肢の内容とスタックポインタの役割を照合する。
- プログラムカウンタやフラグレジスタの役割と混同していないか確認する。
選択肢別の誤答解説
- イ: 「次に読み出す機械語命令が格納されているアドレス」はプログラムカウンタの役割です。
- ウ: 「メモリから読み出された機械語命令」は命令レジスタの内容であり、スタックポインタとは無関係です。
- エ: 「割込みの許可状態や条件分岐の判断に必要な演算結果の状態」はフラグレジスタの役割です。
補足コラム
スタックはLIFO(Last In First Out)構造で、関数呼び出しのネストや割込み処理時の状態保存に不可欠です。スタックポインタはこの構造の「現在の位置」を示し、プログラムの正しい実行制御を支えています。
FAQ
Q: スタックポインタとプログラムカウンタはどう違いますか?
A: スタックポインタはスタックのトップアドレスを示し、プログラムカウンタは次に実行する命令のアドレスを示します。
A: スタックポインタはスタックのトップアドレスを示し、プログラムカウンタは次に実行する命令のアドレスを示します。
Q: スタックポインタはどのように更新されますか?
A: データのプッシュ(保存)時に減少し、ポップ(取り出し)時に増加することが一般的です。
A: データのプッシュ(保存)時に減少し、ポップ(取り出し)時に増加することが一般的です。
関連キーワード: スタックポインタ、サブルーチン、戻り先アドレス、プログラムカウンタ、フラグレジスタ、CPUレジスタ

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

