命令セット・アセンブリ

RISC-Vの「add」命令と「addi」命令の違いとして正しいものはどれか。

  1. Aaddは整数を足し、addiは浮動小数点数を足す
  2. Baddはメモリ上の値を足し、addiはレジスタの値を足す
  3. Caddはレジスタ同士を足し、addiはレジスタと命令の中に書かれた定数(即値)を足す
答えと解説を見る

正解:C. addはレジスタ同士を足し、addiはレジスタと命令の中に書かれた定数(即値)を足す

「add rd, rs1, rs2」は2つのレジスタの和をrdに入れ、「addi rd, rs1, imm」はレジスタと命令の中に埋め込まれた12ビットの定数(即値)を足します。即値を使えば、定数をいったんレジスタに用意する手間が省けます。RISC-Vには引き算の即値命令がなく、「addi t0, t0, -1」のように負の即値を足して引き算をします。

  • A. 浮動小数点の加算はfadd.sなどの別命令です。
  • B. RISC-Vの演算命令はメモリを直接扱いません。
  • C. 正しい。iは即値(immediate)の意味です。
この分野を解く 分野ページへ

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

  1. 上のRISC-Vのコードを実行した後、レジスタa2の値はいくらか。
  2. RISC-Vの命令「lw t0, 8(sp)」の動作として正しいものはどれか。
  3. RISC-Vの条件分岐命令「beq a0, a1, label」で、分岐先labelの番地はどのように表されているか。
  4. 分岐やジャンプにPC相対アドレッシングを使うことの利点として正しいものはどれか。
  5. RISC-Vの基本命令とx86の命令の長さについて正しいものはどれか。