指令集與組合語言

在RISC-V中以lui與addi兩個指令產生常數0x12345FFF時,正確的組合是下列何者?

  1. Alui t0, 0x12346 之後接 addi t0, t0, -1
  2. Blui t0, 0x12345 之後接 addi t0, t0, 0xFFF
  3. Clui t0, 0x12345 之後接 addi t0, t0, -1
查看答案與解析

正確答案:A. lui t0, 0x12346 之後接 addi t0, t0, -1

addi的立即值會被符號擴充,所以當低12位元為0xFFF(最高位元為1)時,會被當成-1來相加。因此將lui產生的高位部分改為大1的0x12346,再對0x12346000加上-1,就得到0x12345FFF。當低12位元的位元11為1時,須事先在高位加1,這種修正由組譯器與連結器自動進行。

  • A. 正確。0x12346000-1=0x12345FFF。
  • B. 12位元的0xFFF會被符號擴充,以-1相加。
  • C. 0x12345000-1=0x12344FFF,結果會不對。
練習這個領域 前往領域頁面

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

  1. 下列何者是RISC-V的auipc指令(add upper immediate to PC)的動作?
  2. 在RISC-V(RV32I)中執行「addi t0, zero, -1」之後,t0中存放的32位元值是下列何者?
  3. 記憶體上的1個位元組存放著0x80。以RISC-V的lb指令與lbu指令將此位元組載入32位元暫存器時,下列何者是兩者的值的正確組合?
  4. 關於條件分支的機制,下列何者是RISC-V與x86的差異?
  5. 下列何者是RISC-V指令「slt t0, a0, a1」的動作?