指令集與組合語言

下列何者是RISC-V的「add」指令與「addi」指令的差異?

  1. Aadd是加整數,addi是加浮點數
  2. Badd是加記憶體上的值,addi是加暫存器的值
  3. Cadd是將暫存器之間相加,addi是將暫存器與寫在指令中的常數(立即值)相加
查看答案與解析

正確答案:C. add是將暫存器之間相加,addi是將暫存器與寫在指令中的常數(立即值)相加

「add rd, rs1, rs2」將兩個暫存器的和放入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指令的長度,下列何者正確?