指令集與組合語言
下列何者是在RISC-V函式開頭執行「addi sp, sp, -16」的目的?
- A讓堆疊往位址較小的方向延伸,確保16位元組的工作區域
- B釋放堆疊上的16位元組
- C將sp中的值減16,作為回傳值回傳
查看答案與解析
正確答案:A. 讓堆疊往位址較小的方向延伸,確保16位元組的工作區域
依包含RISC-V在內的許多ISA的慣例,堆疊是從位址較大的一方往較小的一方延伸。將sp減16,則從新的sp到原本的sp之間的16位元組,就成為這個函式的堆疊框,可以放置返回位址、已保存的暫存器及區域變數。在函式結束時以「addi sp, sp, 16」將sp還原,區域就會被釋放,回到與呼叫前相同的狀態。
- A. 正確。堆疊往位址較小的方向延伸。
- B. 釋放是最後的「addi sp, sp, 16」。
- C. 回傳值是以a0回傳。