連結器與載入器與執行檔格式

關於位置獨立程式碼(PIC),下列說明何者正確?

  1. A在任何CPU上都以相同方式運作的機器碼
  2. B在執行中持續移動自己所在位置的機器碼
  3. C無論載入到記憶體的哪個位址,都不必改寫程式碼就能正確運作的機器碼
查看答案與解析

正確答案:C. 無論載入到記憶體的哪個位址,都不必改寫程式碼就能正確運作的機器碼

共用函式庫可能依行程不同而被載入到不同的位址。在位置獨立程式碼中,函式與資料不是以固定位址參照,而是透過與PC的距離,或彙整位址的表(GOT)來參照。如此一來,即使載入的位址改變,也不必改寫程式碼的分頁,因此實體記憶體上的同一份副本可由許多行程共用。

  • A. 機器碼會因CPU的ISA而異。
  • B. 並不是持續移動所在位置。
  • C. 正確。是共用函式庫不可或缺的。
練習這個領域 前往領域頁面

連結器與載入器與執行檔格式的其他題目

  1. 關於共用函式庫所使用的GOT(全域偏移表,Global Offset Table)的功用,下列何者正確?
  2. 在動態連結中,使用PLT(程序連結表,Procedure Linkage Table)進行延遲繫結(lazy binding)時,下列說明何者正確?
  3. 在Linux等系統中啟動動態連結的程式時,動態連結器(ld.so等)的功用,下列何者正確?
  4. 關於ASLR(位址空間配置隨機化)的目的,下列何者正確?
  5. 將執行檔建置為PIE(位置獨立執行檔)的主要理由為下列何者?

這個領域的比較