連結器與載入器與執行檔格式
關於共用函式庫所使用的GOT(全域偏移表,Global Offset Table)的功用,下列何者正確?
- A是將函式庫中的函式名稱依字母順序排列的目錄
- B是暫時存放快取放不下的資料的表
- C是彙整外部變數與函式之實際位址的表,由動態連結器在執行時填入,程式碼透過這張表來參照
查看答案與解析
正確答案:C. 是彙整外部變數與函式之實際位址的表,由動態連結器在執行時填入,程式碼透過這張表來參照
位置獨立程式碼無法將位於其他函式庫中的變數位址直接寫入指令。因此每個模組會準備一張排列位址的表(GOT),程式碼以與PC的距離讀取GOT的項目,並使用其中的位址。動態連結器在載入時,會將實際位址寫入GOT。被改寫的只有可寫入的資料GOT,因此程式碼的分頁可維持共用。
- A. 不是目錄,而是位址的表。
- B. 與快取無關。
- C. 正確。被改寫的只有資料的表,程式碼不會被改寫。