什麼是PC相對定址

以距離目前指令位址(PC)的距離,表示分支目的地或資料位址的方法。不論程式放在哪裡距離都不變,因此是位置無關程式碼的基礎。

日文名稱: PC相対アドレッシング

「PC相對定址」出現在1領域的2道練習題中(指令集與組合語言等)。

這個名詞所屬的領域: 指令集與組合語言

練習PC相對定址的題目

下列何者是分支或跳躍使用PC相對定址的優點?

  1. A無論分支目標多遠,一個指令必定能到達
  2. B不需要分支預測,管線不會停頓
  3. C無論將程式載入記憶體的哪個位址,都不必改寫指令就能執行
查看答案與解析

正確答案:C. 無論將程式載入記憶體的哪個位址,都不必改寫指令就能執行

PC相對的分支是以「從這裡往前多少位元組」的距離來表示目的地,所以即使將整個程式移到別的位址,距離也不變,可以直接執行。這是共用函式庫等使用的位置無關程式碼(PIC)的基礎。不過因為表示距離的位元數有限,要跳到遠處時,會組合使用auipc與jalr。分支預測的必要性與表示方式無關。

解析中的「PC相對定址」

出現「PC相對定址」的題目(2題)

  1. 下列何者是分支或跳躍使用PC相對定址的優點?
  2. 在RISC-V的條件分支指令「beq a0, a1, label」中,分支目標label的位址是如何表示的?

相關名詞

位置無關程式碼(Position-independent code) 分支預測 分支延遲槽 立即值 呼叫者保存暫存器 呼叫慣例 定址模式 返回位址 框指標 堆疊指標

前往名詞解釋列表