指令集與組合語言
下列何者是分支或跳躍使用PC相對定址的優點?
- A無論分支目標多遠,一個指令必定能到達
- B不需要分支預測,管線不會停頓
- C無論將程式載入記憶體的哪個位址,都不必改寫指令就能執行
查看答案與解析
正確答案:C. 無論將程式載入記憶體的哪個位址,都不必改寫指令就能執行
PC相對的分支是以「從這裡往前多少位元組」的距離來表示目的地,所以即使將整個程式移到別的位址,距離也不變,可以直接執行。這是共用函式庫等使用的位置無關程式碼(PIC)的基礎。不過因為表示距離的位元數有限,要跳到遠處時,會組合使用auipc與jalr。分支預測的必要性與表示方式無關。
- A. 立即值的寬度有限,所以能到達的範圍有限。
- B. 分支目標的表示方式與分支預測是不同的問題。
- C. 正確。更容易製作位置無關的程式碼。