命令セット・アセンブリ

上のRISC-Vのコードを実行した後、レジスタa2の値はいくらか。

addi a0, zero, 5
addi a1, a0, 3
add  a2, a0, a1
  1. A8
  2. B13
  3. C15
答えと解説を見る

正解:B. 13

1行目はzero(常に0)に5を足してa0=5、2行目はa0に3を足してa1=8、3行目はa0とa1を足してa2=5+8=13になります。RISC-Vの算術命令は「命令 書き込み先, 読み出し元1, 読み出し元2(または即値)」の順に書き、最初のレジスタが結果の入る先です。zeroはx0の別名で、定数を作るときによく使います。

  • A. 8はa1の値です。
  • B. 正しい。5+8=13です。
  • C. a1を5+3=8として計算し直してください。
この分野を解く 分野ページへ

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

  1. RISC-Vの命令「lw t0, 8(sp)」の動作として正しいものはどれか。
  2. RISC-Vの条件分岐命令「beq a0, a1, label」で、分岐先labelの番地はどのように表されているか。
  3. 分岐やジャンプにPC相対アドレッシングを使うことの利点として正しいものはどれか。
  4. RISC-Vの基本命令とx86の命令の長さについて正しいものはどれか。
  5. 命令の長さを固定長にすることの利点として、最も適切なものはどれか。