基本情報技術者 2013年 春期 午前(科目A) 問10
問題文
主記憶のデータを図のように参照するアドレス指定方式はどれか。

選択肢
ア:間接アドレス指定(正解)
イ:指標アドレス指定
ウ:相対アドレス指定
エ:直接アドレス指定
🔒 解説は解答すると表示されます
間接アドレス指定【午前解説】
正解の理由
命令のアドレス部にある数値(20)そのものがデータを持っているのではなく,主記憶の番地20の内容(25)を読み取り,その25番地に格納された実データを参照しています。命令実行時に主記憶から読み出した値を次の番地として使う「二段参照」の動作こそが間接アドレス指定(indirect addressing)の定義に合致します。
解法ステップ
- 図の矢印の流れを追う:命令部のアドレス(20)から主記憶の番地20へ矢印が向かうことを確認します。
- 番地20のセル内の値(25)からさらに別の番地へ矢印が伸びている点を確認します。
- 命令のアドレス部→主記憶番地の内容を読み出す→その内容を番地として再参照、という二段階参照になっているなら間接アドレス指定です。
- 選択肢と定義を照合して間接(indirect)を選びます。
選択肢別の誤答解説
- ア: 間接アドレス指定 — 正解です。命令アドレス部が指す番地の内容を番地として使い,その先のデータを参照する二段階参照を示しています。
- イ: 指標アドレス指定 — 誤りです。指標(インデックス)はレジスタやインデックス値を加算して有効アドレスを求めますが,図のように主記憶の内容を番地として再参照する動作は含みません。
- ウ: 相対アドレス指定 — 誤りです。相対は命令の位置(PC)にオフセットを加え直接有効アドレスを算出する方式で,多段参照の概念はありません。
- エ: 直接アドレス指定 — 誤りです。直接は命令のアドレス部がそのままデータが存在する番地を表す方式で,図のように一度主記憶を読んで別の番地を得る処理は発生しません。
よくある誤解
- 番地が2つ出ている=指標アドレス指定と誤認:指標はレジスタやインデックスの値を加算する方式で,主記憶内の番地の内容をさらに参照する動作とは異なります。
- 相対アドレスと混同:相対アドレスは命令カウンタ(PC)等からの相対オフセットで1回の計算で有効アドレスが決まるため,多段参照ではありません。
補足コラム
間接アドレス指定はポインタやリンクリストのようなデータ構造に自然に合致し,プログラムレベルではポインタ参照に相当します。間接参照を複数階層(多重間接)で行うと可変長の参照チェーンが可能ですが,メモリアクセス回数が増えて性能上のペナルティが発生します。現代のCPUではキャッシュミスやTLB(翻訳ルックaside buffer)影響も考慮が必要です。
FAQ
Q1: 図に矢印が2本あるだけで間接とわかりますか?
A1: 矢印の意味(どこからどこへ参照が進んでいるか)が重要です。命令部→番地20→番地25→データという流れがあれば間接です。
A1: 矢印の意味(どこからどこへ参照が進んでいるか)が重要です。命令部→番地20→番地25→データという流れがあれば間接です。
Q2: 指標アドレス指定と間接は似て見えますが、短く識別するコツは?
A2: 「アドレスを計算するか、主記憶の内容を番地として使うか」を確認してください。主記憶の内容を番地にするなら間接です。
A2: 「アドレスを計算するか、主記憶の内容を番地として使うか」を確認してください。主記憶の内容を番地にするなら間接です。
Q3: 多重間接(チェイン)も間接に含まれますか?
A3: はい。命令実行時に主記憶の値を読み、その値をさらに番地として読み出す処理を繰り返す方式は多重間接と呼ばれ、間接アドレス指定の拡張です。
A3: はい。命令実行時に主記憶の値を読み、その値をさらに番地として読み出す処理を繰り返す方式は多重間接と呼ばれ、間接アドレス指定の拡張です。
関連キーワード: 間接アドレス指定、間接参照、アドレス解決、指標アドレス指定、相対アドレス指定、直接アドレス指定、主記憶、ポインタ、多重間接、命令形式

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

