命令セット・アセンブリ

分岐やジャンプにPC相対アドレッシングを使うことの利点として正しいものはどれか。

  1. A分岐先がどれほど遠くても、1つの命令で必ず届く
  2. B分岐予測が不要になり、パイプラインが止まらなくなる
  3. Cプログラムをメモリのどの番地に読み込んでも、命令を書き換えずに動かせる
答えと解説を見る

正解:C. プログラムをメモリのどの番地に読み込んでも、命令を書き換えずに動かせる

PC相対の分岐は「ここから何バイト先」という距離で行き先を表すので、プログラム全体を別の番地にずらしても距離は変わらず、そのまま動きます。これは共有ライブラリなどで使う位置独立コード(PIC)の土台になります。ただし距離を表すビット数に限りがあるため、遠くへ飛ぶときはauipcとjalrを組み合わせます。分岐予測の必要性は、表し方とは関係ありません。

  • A. 即値の幅に限りがあるので、届く範囲は限られます。
  • B. 分岐先の表し方と分岐予測は別の問題です。
  • C. 正しい。位置独立なコードを作りやすくなります。
この分野を解く 分野ページへ

命令セット・アセンブリのほかの問題

  1. RISC-Vの基本命令とx86の命令の長さについて正しいものはどれか。
  2. 命令の長さを固定長にすることの利点として、最も適切なものはどれか。
  3. RISC-Vの命令では、レジスタを指定する欄(rd、rs1、rs2)がそれぞれ5ビットである。その理由として正しいものはどれか。
  4. RISC-Vのaddi命令の即値は12ビットの符号付き整数である。この即値で表せる範囲はどれか。
  5. RISC-Vで、12ビットの即値に収まらない32ビットの定数(例: 0x12345678)をレジスタに入れる一般的な方法はどれか。