指令集與組合語言

RISC-V的addi指令的立即值是12位元帶正負號的整數。下列何者是此立即值能表示的範圍?

  1. A0~4095
  2. B-2048~2047
  3. C-4096~4095
查看答案與解析

正確答案:B. -2048~2047

12位元的二補數所能表示的,是從-2的11次方=-2048到2的11次方-1=2047。立即值在計算前會先符號擴充為32位元(RV64則為64位元),所以負數也能直接相加。要使用超出此範圍的常數,需組合多個指令,例如以lui指令設定高20位元,再以addi加上低12位元。

  • A. 這是無號12位元的範圍。
  • B. 正確。是二補數12位元的範圍。
  • C. 這是13位元的範圍。
練習這個領域 前往領域頁面

指令集與組合語言的其他題目

  1. 在RISC-V中,要將無法收進12位元立即值的32位元常數(例:0x12345678)放入暫存器,一般的方法是下列何者?
  2. 在RISC-V中以lui與addi兩個指令產生常數0x12345FFF時,正確的組合是下列何者?
  3. 下列何者是RISC-V的auipc指令(add upper immediate to PC)的動作?
  4. 在RISC-V(RV32I)中執行「addi t0, zero, -1」之後,t0中存放的32位元值是下列何者?
  5. 記憶體上的1個位元組存放著0x80。以RISC-V的lb指令與lbu指令將此位元組載入32位元暫存器時,下列何者是兩者的值的正確組合?