指令集與組合語言

下列何者是RISC-V指令「jal ra, func」的動作?

  1. A將下一個指令的位址存入ra之後,跳躍到func
  2. B只將func的位址放入ra,不跳躍
  3. 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)。
練習這個領域 前往領域頁面

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

  1. RISC-V的虛擬指令「ret」,實際上是以下列哪一個指令執行的?
  2. 下列何者是制定呼叫慣例(calling convention)的主要目的?
  3. 在RISC-V的標準呼叫慣例中,下列何者是用於傳遞整數引數與回傳值的暫存器?
  4. 在RISC-V的標準呼叫慣例中,呼叫一個有10個整數引數的函式時,第9個與第10個引數是在哪裡傳遞?
  5. 在RISC-V的呼叫慣例中,s0~s11被視為「被呼叫端保存(callee-saved)」的暫存器,下列何者是其意義?