指令集與組合語言
下列何者是RISC-V指令「jal ra, func」的動作?
- A將下一個指令的位址存入ra之後,跳躍到func
- B只將func的位址放入ra,不跳躍
- C返回ra中所存放的位址
查看答案與解析
正確答案:A. 將下一個指令的位址存入ra之後,跳躍到func
jal(jump and link)會將自己下一個指令的位址(PC+4)寫入指定的暫存器(連結),並跳躍到目的位址。依呼叫慣例,返回位址放在ra(x1),所以函式的呼叫寫成「jal ra, func」,以虛擬指令則寫成「call func」。被呼叫的函式在處理的最後會返回ra的位址。若將寫入目的地設為x0,就只是單純的跳躍。
- A. 正確。是用於函式呼叫的指令。
- B. jal也會執行跳躍。
- C. 返回的是ret(jalr)。