命令セット・アセンブリ

RISC-Vの条件分岐命令(B形式)は、分岐先までの距離を13ビットの符号付きのバイト数で表し、その最下位ビットは常に0として命令に入れない。分岐命令が直接届く範囲としておよそ正しいものはどれか。

  1. A分岐命令から前後およそ4KiB
  2. B分岐命令から前後およそ1MiB
  3. Cメモリ全体のどこへでも届く
答えと解説を見る

正解:A. 分岐命令から前後およそ4KiB

13ビットの符号付きの値は-4096〜+4095を表せますが、命令は2バイト単位で並ぶので最下位ビットは常に0で、範囲は-4096〜+4094バイトです。最下位ビットを省くことで、同じ欄の大きさで2倍の範囲に届きます。これより遠い分岐は、条件を逆にした短い分岐で、遠くへ届くjal(およそ±1MiB)を飛び越える形に、アセンブラが書き換えます。

  • A. 正しい。-4096〜+4094バイトです。
  • B. およそ1MiBはjal命令(21ビット)の範囲です。
  • C. 限られたビット数では全体には届きません。
この分野を解く 分野ページへ

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

  1. RISC-Vの命令「jal ra, func」の動作として正しいものはどれか。
  2. RISC-Vの疑似命令「ret」は、実際にはどの命令として実行されるか。
  3. 呼び出し規約(コーリングコンベンション)が決められている主な目的はどれか。
  4. RISC-Vの標準の呼び出し規約で、整数の引数と戻り値の受け渡しに使うレジスタとして正しいものはどれか。
  5. RISC-Vの標準の呼び出し規約で、整数の引数が10個ある関数を呼ぶとき、9個目と10個目の引数はどこで渡されるか。