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

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

