応用情報技術者 2012年 秋期 午前2 問10
問題文
CPUのスタックポインタが示すものはどれか。
選択肢
ア:サブルーチン呼出し時に、戻り先アドレス及びレジスタの内容を格納するメモリのアドレス(正解)
イ:次に読み出す機械語命令が格納されているアドレス
ウ:メモリから読み出された機械語命令
エ:割込みの許可状態、 及び条件分岐の判断に必要な演算結果の状態
CPUのスタックポインタが示すものはどれか【午前2 解説】
要点まとめ
- 結論:CPUのスタックポインタは、サブルーチン呼出し時に戻り先アドレスやレジスタの内容を格納するメモリのアドレスを示します。
- 根拠:スタックはLIFO構造で、関数呼出し時の情報保存に使われ、スタックポインタはその先頭を指します。
- 差がつくポイント:プログラムの制御フロー管理におけるスタックの役割と、スタックポインタの指す対象を正確に理解することが重要です。
正解の理由
選択肢アは「サブルーチン呼出し時に、戻り先アドレス及びレジスタの内容を格納するメモリのアドレス」とあり、これはスタックポインタが指すメモリアドレスの役割を正確に表しています。スタックポインタはスタックの先頭を示し、関数呼出し時の戻り先アドレスやレジスタの保存に使われるため、正解です。
よくある誤解
スタックポインタは命令のアドレスや演算結果の状態を示すものではありません。これらはプログラムカウンタやフラグレジスタの役割です。
解法ステップ
- スタックポインタの役割を確認する
- スタックの用途(戻り先アドレスやレジスタ保存)を理解する
- 選択肢の内容とスタックポインタの役割を照合する
- スタックポインタが示すのはメモリアドレスであることを確認する
- 正しい選択肢を選ぶ
選択肢別の誤答解説
- イ: 次に読み出す機械語命令のアドレスはプログラムカウンタ(PC)が示します。
- ウ: メモリから読み出された機械語命令は命令レジスタの内容であり、スタックポインタとは無関係です。
- エ: 割込みの許可状態や演算結果の状態はフラグレジスタやステータスレジスタが管理します。
補足コラム
スタックはLIFO(Last In First Out)構造で、関数呼出し時の戻り先アドレスや局所変数の保存に使われます。スタックポインタはこのスタックの現在の先頭を示し、プログラムの正常な制御フロー維持に不可欠です。スタックの理解は低レベルプログラミングやOSの基礎知識としても重要です。
FAQ
Q: スタックポインタとプログラムカウンタの違いは何ですか?
A: スタックポインタはスタックの先頭アドレスを示し、プログラムカウンタは次に実行する命令のアドレスを示します。
A: スタックポインタはスタックの先頭アドレスを示し、プログラムカウンタは次に実行する命令のアドレスを示します。
Q: スタックポインタはどのように更新されますか?
A: データのプッシュ(保存)時に減少し、ポップ(取り出し)時に増加することが一般的です(CPUの設計による)。
A: データのプッシュ(保存)時に減少し、ポップ(取り出し)時に増加することが一般的です(CPUの設計による)。
関連キーワード: スタックポインタ、サブルーチン、メモリアドレス、プログラムカウンタ、フラグレジスタ

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

