命令セット・アセンブリ

RISC-Vのaddi命令の即値は12ビットの符号付き整数である。この即値で表せる範囲はどれか。

  1. A0〜4095
  2. B-2048〜2047
  3. C-4096〜4095
答えと解説を見る

正解:B. -2048〜2047

12ビットの2の補数で表せるのは、-2の11乗=-2048から2の11乗-1=2047までです。即値は計算の前に32ビット(RV64では64ビット)に符号拡張されるので、負の数もそのまま足せます。この範囲を超える定数を使うには、上位20ビットをlui命令で設定してからaddiで下位12ビットを足すなど、複数の命令を組み合わせます。

  • A. これは符号なし12ビットの範囲です。
  • B. 正しい。2の補数の12ビットの範囲です。
  • C. これは13ビット分の範囲です。
この分野を解く 分野ページへ

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

  1. RISC-Vで、12ビットの即値に収まらない32ビットの定数(例: 0x12345678)をレジスタに入れる一般的な方法はどれか。
  2. RISC-Vで定数0x12345FFFをluiとaddiの2命令で作るとき、正しい組み合わせはどれか。
  3. RISC-Vのauipc命令(add upper immediate to PC)の動作として正しいものはどれか。
  4. RISC-V(RV32I)で「addi t0, zero, -1」を実行した後、t0に入っている32ビットの値はどれか。
  5. メモリ上の1バイトに0x80が入っている。RISC-Vのlb命令とlbu命令でこのバイトを32ビットのレジスタに読み込んだときの値の組み合わせとして正しいものはどれか。