命令セット・アセンブリ
分岐やジャンプにPC相対アドレッシングを使うことの利点として正しいものはどれか。
- A分岐先がどれほど遠くても、1つの命令で必ず届く
- B分岐予測が不要になり、パイプラインが止まらなくなる
- Cプログラムをメモリのどの番地に読み込んでも、命令を書き換えずに動かせる
答えと解説を見る
正解:C. プログラムをメモリのどの番地に読み込んでも、命令を書き換えずに動かせる
PC相対の分岐は「ここから何バイト先」という距離で行き先を表すので、プログラム全体を別の番地にずらしても距離は変わらず、そのまま動きます。これは共有ライブラリなどで使う位置独立コード(PIC)の土台になります。ただし距離を表すビット数に限りがあるため、遠くへ飛ぶときはauipcとjalrを組み合わせます。分岐予測の必要性は、表し方とは関係ありません。
- A. 即値の幅に限りがあるので、届く範囲は限られます。
- B. 分岐先の表し方と分岐予測は別の問題です。
- C. 正しい。位置独立なコードを作りやすくなります。