命令セット・アセンブリ

RISC-Vの条件分岐命令「beq a0, a1, label」で、分岐先labelの番地はどのように表されているか。

  1. A分岐先の番地そのもの(32ビット)が命令の中に入っている
  2. B分岐命令自身の番地(PC)からの距離として命令の中に入っている
  3. C分岐先の番地をa1レジスタに入れておく必要がある
答えと解説を見る

正解:B. 分岐命令自身の番地(PC)からの距離として命令の中に入っている

RISC-Vの分岐命令は、分岐先を「今の命令の番地(PC)から何バイト先か」という符号付きの距離で表します。これをPC相対アドレッシングと呼びます。分岐先はたいてい近くにあるので短い距離で足り、32ビットの命令の中に収まります。また、プログラム全体を別の番地に置いても距離は変わらないので、書き直さずに動くという利点もあります。

  • A. 32ビットの命令に32ビットの番地は入りきりません。
  • B. 正しい。PC相対アドレッシングです。
  • C. a1は比較する値の一つで、番地ではありません。
この分野を解く 分野ページへ

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

  1. 分岐やジャンプにPC相対アドレッシングを使うことの利点として正しいものはどれか。
  2. RISC-Vの基本命令とx86の命令の長さについて正しいものはどれか。
  3. 命令の長さを固定長にすることの利点として、最も適切なものはどれか。
  4. RISC-Vの命令では、レジスタを指定する欄(rd、rs1、rs2)がそれぞれ5ビットである。その理由として正しいものはどれか。
  5. RISC-Vのaddi命令の即値は12ビットの符号付き整数である。この即値で表せる範囲はどれか。