命令セット・アセンブリ

RISC-Vの疑似命令「nop」(何もしない)は、アセンブラによって実際にはどの命令に置き換えられるか。

  1. Aaddi x0, x0, 0
  2. Bjal ra, 0
  3. Clw x0, 0(sp)
答えと解説を見る

正解:A. addi x0, x0, 0

RISC-Vには「何もしない」専用の命令はなく、nopは「addi x0, x0, 0」として表されます。x0への書き込みは捨てられるので、レジスタもメモリも何も変わりません。同様に「mv rd, rs」は「addi rd, rs, 0」、「j label」は「jal x0, label」、「ret」は「jalr x0, 0(ra)」です。x0を使って命令の種類を少なく保つのがRISC-Vの設計の考え方です。

  • A. 正しい。結果をx0に捨てる加算です。
  • B. raを書き換えてしまうので、何もしない命令になりません。
  • C. メモリを読むので、例外が起きる可能性もあります。
この分野を解く 分野ページへ

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

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