指令集與組合語言
下列何者是RISC-V的auipc指令(add upper immediate to PC)的動作?
- A將PC的值直接存入記憶體
- B將自己的位址(PC)加上把20位元立即值左移12位元後的值,放入暫存器
- C無條件跳躍到以立即值指定的位址,並改寫PC
查看答案與解析
正確答案:B. 將自己的位址(PC)加上把20位元立即值左移12位元後的值,放入暫存器
auipc只是將「PC+(立即值<<12)」放入暫存器的指令。接著以jalr或lw加上低12位元的位移,就能以距離PC的距離,指定位於目前位置約±2GiB範圍內的函式或資料的位址。藉此,在無論程式載入何處都能執行的位置無關程式碼中,也能呼叫遠處的函式或讀取全域變數。
- A. 不會存入記憶體。
- B. 正確。是用來產生PC相對位址的指令。
- C. auipc本身不會跳躍。