指令集與組合語言

下列何者是RISC-V的auipc指令(add upper immediate to PC)的動作?

  1. A將PC的值直接存入記憶體
  2. B將自己的位址(PC)加上把20位元立即值左移12位元後的值,放入暫存器
  3. C無條件跳躍到以立即值指定的位址,並改寫PC
查看答案與解析

正確答案:B. 將自己的位址(PC)加上把20位元立即值左移12位元後的值,放入暫存器

auipc只是將「PC+(立即值<<12)」放入暫存器的指令。接著以jalr或lw加上低12位元的位移,就能以距離PC的距離,指定位於目前位置約±2GiB範圍內的函式或資料的位址。藉此,在無論程式載入何處都能執行的位置無關程式碼中,也能呼叫遠處的函式或讀取全域變數。

  • A. 不會存入記憶體。
  • B. 正確。是用來產生PC相對位址的指令。
  • C. auipc本身不會跳躍。
練習這個領域 前往領域頁面

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

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