指令集與組合語言
在RISC-V的標準呼叫慣例中,進入函式時的堆疊指標sp規定要對齊為16位元組的倍數。下列何者是最適當的理由?
- A因為堆疊的容量若不是16位元組的倍數,作業系統就無法啟動
- B因為要在sp的低4位元記錄函式的編號
- C因為即使將最大16位元組的大型資料放在堆疊上,也能不跨越邊界而有效率地讀寫
查看答案與解析
正確答案:C. 因為即使將最大16位元組的大型資料放在堆疊上,也能不跨越邊界而有效率地讀寫
資料若放在其大小的倍數的位址(對齊),就能不跨越邊界而一次讀寫。只要讓sp永遠保持為16的倍數,即使將8位元組的double或16位元組的long double等放在堆疊上,對齊也能維持。因此函式會以16的倍數來配置框的大小,即使只保存一個暫存器,也是「addi sp, sp, -16」。
- A. 與作業系統的啟動無關。
- B. 不會在sp的低位元放入資訊。
- C. 正確。是為了雙精度與128位元資料的對齊。