指令集與組合語言
在RISC-V的標準呼叫慣例中,呼叫一個有10個整數引數的函式時,第9個與第10個引數是在哪裡傳遞?
- As0與s1
- Bt0與t1
- C堆疊上
查看答案與解析
正確答案:C. 堆疊上
引數用的暫存器只有a0~a7共8個,所以第9個以後由呼叫端堆入堆疊,被呼叫端則從堆疊指標起算的固定位置讀取。由於記憶體的存取增加,引數非常多的函式會稍微變慢。常見的做法是設法減少引數,例如將大型結構體整個以指向結構體的指標來傳遞。
- A. s0~是被呼叫端要保存的暫存器,不是引數用的。
- B. t0~是暫時用的暫存器,不是引數用的。
- C. 正確。暫存器放不下的部分放在堆疊。