命令セット・アセンブリ

RISC-Vの命令では、レジスタを指定する欄(rd、rs1、rs2)がそれぞれ5ビットである。その理由として正しいものはどれか。

  1. Aレジスタの幅が5ビットだから
  2. B1つの命令で最大5つのレジスタを使えるから
  3. C整数レジスタが32本あり、2の5乗=32通りで指定できるから
答えと解説を見る

正解:C. 整数レジスタが32本あり、2の5乗=32通りで指定できるから

R形式の命令は、上位からfunct7(7ビット)・rs2(5)・rs1(5)・funct3(3)・rd(5)・opcode(7)の合計32ビットでできています。レジスタは32本なので、番号は5ビットで表せます。レジスタを64本に増やすと欄が6ビットずつ必要になり、3つで3ビット余分に使うため、即値や命令の種類に使えるビットが減ります。レジスタの本数は命令の形と結びついているのです。

  • A. レジスタの幅は32ビットまたは64ビットです。
  • B. 基本の命令が使うのは最大でrd・rs1・rs2の3つです。
  • C. 正しい。5ビットで0〜31を表せます。
この分野を解く 分野ページへ

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

  1. RISC-Vのaddi命令の即値は12ビットの符号付き整数である。この即値で表せる範囲はどれか。
  2. RISC-Vで、12ビットの即値に収まらない32ビットの定数(例: 0x12345678)をレジスタに入れる一般的な方法はどれか。
  3. RISC-Vで定数0x12345FFFをluiとaddiの2命令で作るとき、正しい組み合わせはどれか。
  4. RISC-Vのauipc命令(add upper immediate to PC)の動作として正しいものはどれか。
  5. RISC-V(RV32I)で「addi t0, zero, -1」を実行した後、t0に入っている32ビットの値はどれか。