命令セット・アセンブリ
RISC-Vの条件分岐命令「beq a0, a1, label」で、分岐先labelの番地はどのように表されているか。
- A分岐先の番地そのもの(32ビット)が命令の中に入っている
- B分岐命令自身の番地(PC)からの距離として命令の中に入っている
- C分岐先の番地をa1レジスタに入れておく必要がある
答えと解説を見る
正解:B. 分岐命令自身の番地(PC)からの距離として命令の中に入っている
RISC-Vの分岐命令は、分岐先を「今の命令の番地(PC)から何バイト先か」という符号付きの距離で表します。これをPC相対アドレッシングと呼びます。分岐先はたいてい近くにあるので短い距離で足り、32ビットの命令の中に収まります。また、プログラム全体を別の番地に置いても距離は変わらないので、書き直さずに動くという利点もあります。
- A. 32ビットの命令に32ビットの番地は入りきりません。
- B. 正しい。PC相対アドレッシングです。
- C. a1は比較する値の一つで、番地ではありません。