命令セット・アセンブリ
RISC-Vの「add」命令と「addi」命令の違いとして正しいものはどれか。
- Aaddは整数を足し、addiは浮動小数点数を足す
- Baddはメモリ上の値を足し、addiはレジスタの値を足す
- 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)の意味です。