基本情報 平成28年度 春期 問9:テクノロジ系に関する問題
主記憶のデータを図のように参照するアドレス指定方式はどれか。 命令部 アドレス部 、 主記憶 | | 20 | アドレス > 20| 25? (に め5 データ テー
- a間接アドレス指定正答
- b指標アドレス指定
- c相対アドレス指定
- d直接アドレス指定
AI解説(初心者・標準・上級)
理解度に合わせて3レベルの解説を無料で読めます。
答えは a「間接アドレス指定」 です。
アドレス指定は「地図の使い方」の話。
- 直接:地図に「○○宝箱の場所」が直接書いてある
- 間接:地図に「別の地図の場所」が書いてあって、そこを見に行くと本物の宝箱の場所が分かる(2段階で取りに行く)
問題の図は「アドレス20→そこに25→25が本物のデータ位置」と2回参照しているので間接アドレス指定。
👉 覚え方:間接=住所の住所。
ほかの選択肢:b 指標=レジスタの値を足してズラす/c 相対=今いる場所からの距離/d 直接=そのまま指定。
なぜこれが正解か
正解は a。間接アドレス指定方式は、命令のアドレス部に書かれた値を実効アドレスそのものではなく、実効アドレスが格納された場所のアドレスとして扱う。図のように「アドレス部=20→主記憶[20]=25→主記憶[25]がデータ」と2段階で参照する形式は間接アドレス指定の典型。
各選択肢の解説
- a 間接アドレス指定:正解。アドレス部の値が「アドレスの格納場所」を指す。
- b 指標アドレス指定:アドレス部の値に指標レジスタ(インデックスレジスタ)の値を加算して実効アドレスを得る。配列アクセスで多用。
- c 相対アドレス指定:アドレス部の値にプログラムカウンタ(PC)の値を加算。再配置可能プログラム作成に有効。
- d 直接アドレス指定:アドレス部の値がそのまま実効アドレス。最もシンプル。
覚え方・ひっかけ注意
「直接=1回/間接=2回/指標=指標レジスタ加算/相対=PC加算」で識別。間接はポインタのポインタのような関係。試験では参照回数や加算対象から方式を判定する図解問題が定番。
理論的背景
アドレッシングモードはCPU設計の中核要素で、命令セットアーキテクチャ(ISA)の表現力を決定する。主要方式は即値(immediate)/直接/間接/レジスタ/レジスタ間接/指標/基底/相対/自己相対等。CISC(x86等)は豊富なアドレッシングモードを持ち、RISC(ARM・RISC-V等)はLoad/Store命令でのみメモリアクセスを許す簡素設計で、間接アドレッシングはレジスタ間接に限定されることが多い。
実務での使われ方
間接アドレッシングは動的ディスパッチ(仮想関数テーブル)・関数ポインタ・ジャンプテーブルの実装基盤。C言語の`int **pp`、C++の`vtable`、Pythonの`PyObject*`への参照解決すべてが間接参照の応用。OSのシステムコールテーブル参照や割込みベクタテーブルも間接アドレッシングそのもの。性能面ではキャッシュミス増加要因となるため、ホットパスでは避ける最適化が行われる。
試験での位置づけ
コンピュータアーキテクチャ分野の頻出テーマ。基本情報では方式判定問題、応用情報・組込みシステムスペシャリストでは性能・コードサイズ・ハードウェアコストとのトレードオフが問われる。仮想記憶のページテーブル参照(多段ページテーブル)も実質的に多段間接アドレッシングと理解できる。
選択肢の発展補足
アドレッシングモード別の用途:
- 指標:配列要素アクセス(base + index×scale)
- 相対:再配置可能コード・ジャンプ命令
- 基底:関数のローカル変数アクセス(base + offset)
- 間接:ポインタ・vtable・コールバック
セキュリティ文脈では間接アドレッシングがROP(Return-Oriented Programming)攻撃の温床になる。CFI(Control Flow Integrity)やARMのPointer Authentication(PAC)は間接ジャンプの検証で攻撃を防ぐ。試験対策としては基本方式の図解と用途を押さえつつ、現代CPUセキュリティ機構との接続も知っておくと応用問題に強い。
出典:IPA(情報処理推進機構)公式 基本情報技術者試験 平成28年度 春期 問9/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。