指令集與組合語言

在RISC-V(RV32I)中執行「addi t0, zero, -1」之後,t0中存放的32位元值是下列何者?

  1. A0xFFFFFFFF
  2. B0x00000FFF
  3. C0x80000001
查看答案與解析

正確答案:A. 0xFFFFFFFF

立即值-1以12位元表示為0xFFF。addi會將它符號擴充為32位元,也就是把最高位元的1複製到所有高位,因此成為0xFFFFFFFF,以二補數表示-1。多虧有符號擴充,只要加上負的立即值就能做減法。若高位以零填補,則成為0x00000FFF=4095,意義就變了。

  • A. 正確。-1經符號擴充後所有位元皆為1。
  • B. 這是不做符號擴充、以零填補時的值。
  • C. 這是以符號加絕對值表示的-1,不是二補數。
練習這個領域 前往領域頁面

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

  1. 記憶體上的1個位元組存放著0x80。以RISC-V的lb指令與lbu指令將此位元組載入32位元暫存器時,下列何者是兩者的值的正確組合?
  2. 關於條件分支的機制,下列何者是RISC-V與x86的差異?
  3. 下列何者是RISC-V指令「slt t0, a0, a1」的動作?
  4. 執行完上述RISC-V程式碼時,t0的值是多少?
  5. RISC-V的條件分支指令(B格式)以13位元帶正負號的位元組數表示到分支目標的距離,其最低位元永遠為0,不放入指令中。下列何者大致是分支指令可直接到達的範圍?