指令集與組合語言
下列何者是在函式中使用框指標(frame pointer,RISC-V中為s0/fp)的優點?
- A不必多用一個暫存器,所以效能必定提升
- B即使函式途中sp有移動,也能以固定的距離指定區域變數或引數,除錯器也更容易追蹤呼叫的串連
- C堆疊的區域會自動變大,不會溢位
查看答案與解析
正確答案:B. 即使函式途中sp有移動,也能以固定的距離指定區域變數或引數,除錯器也更容易追蹤呼叫的串連
框指標是在進入函式的時間點,一直指向堆疊位置而不移動的暫存器。即使因為可變長度陣列等而使sp在途中改變,也能以「距fp多少位元組」來指定區域變數。此外,若在各個框中保存前一個fp,藉由追蹤就能得到呼叫的串連(回溯,backtrace)。不過因為會佔用一個暫存器,在最佳化時也常被省略。
- A. 反而會專用一個暫存器。
- B. 正確。作為框的基準點發揮作用。
- C. 沒有防止堆疊溢位的作用。