內容簡介
基本信息
內容包括連結和載入、體系結構、目標檔案、存儲分配、符號管理、庫、重定位、載入和覆蓋、共享庫、動態連結和載入、動態連結的共享庫,以及著眼於成熟的現代連結器所做的一些變化;並介紹一個持續的實踐項目,即使用Perl語言開發一個可用的小連結器。
適用人群
《連結器和載入器》適合高校計算機相關專業的學生、實習程式設計師、語言設計者和開發人員閱讀參考。
作者簡介
作者:(美國)萊文(John R.Levine) 譯者:李勇
萊文(John R.Levine),是很多書籍的作者或合作者,包括Lex & Yacc(O'Reilly),Programming for Graphics Files in C and C++(Wiley),以及7-heIntemetforDummies(IDG)。他還是Journal of C Language Translation的榮譽退休發行人、comp.compilers新聞組的長期仲裁人員,以及某個最早的商用Fortran 77編譯器的創建考。他在耶魯大學獲得了計算機科學的博士學位。
目錄
第1章 連結和載入
1.1 連結器和載入器做什麼?
1.2地址綁定:從歷史的角度
1.3 連結與載入
1.4編譯器驅動
1.5 連結:一個真實的例子
練習
第2章體系結構的問題
2.1應用程式二進制接口
2.2記憶體地址
2.3 地址構成
2.4指令格式
2.5 過程調用和定址能力
2.6 數據和指令引用
2.7 分頁和虛擬記憶體
2.8 Intel 386分段
2.9 嵌入式體系結構
練習
第3章目標檔案
3.1 目標檔案中都有什麼?
3.2 空目標檔案格式:MS-DOS的COM檔案
3.3 代碼區段:UNIX的a.out檔案
3.4重定位:MS-DOS的EXE檔案
3.5 符號和重定位
3.6 可重定位的a.out格式
3.7 UNIX的ELF格式
3.8 IBM 360目標格式
3.9 微軟可移植、可執行體格式
3.10 Intel/Microsoft的OMF檔案格式
3.11 不同目標格式的比較
練習
項目
第4章存儲空間分配
4.1 段和地址
4.2 簡單的存儲布局
4.3 多種段類型
4.4 段與頁面的對齊
4.5 公共塊和其他特殊段
4.6 連結器控制腳本
4.7 實際中的存儲分配
練習
項目
第5章 符號管理
5.1 綁定和名字解析
5.2符號表格式
5.3 名稱修改
5.4 弱外部符號和其他類型符號
5.5 維護調試信息
練習
項目
第6章 庫
6.1 庫的目的
6.2 庫的格式
6.3 建立庫檔案
6.4 搜尋庫檔案
6.5 性能問題
6.6 弱外部符號
練習
項目
第7章重定位
7.1 硬體和軟體重定位
7.2 連結時重定位和載入時重定位
7.3 符號和段重定位
7.4 基本的重定位技術
7.5 可重連結和重定位的輸出格式
7.6 其他重定位格式
7.7 特殊情況的重定位
練習
項目
第8章 載入和覆蓋
8.1 基本載入
8.2 帶重定位的基本載入
8.3 位置無關代碼
8.4 自舉載入
8.5 樹狀結構的覆蓋
練習
項目
第9章 共享庫
9.1 綁定時間
9.2 實際的共享庫
9.3地址空間管理
9.4 共享庫的結構
9.5 創建共享庫
9.6 使用共享庫連結
9.7 使用共享庫運行
9.8 malloc hack和其他共享庫問題
練習
項目
第10章動態連結和載入
10.1 ELF動態連結
10.2 ELF檔案內容
10.3 載入一個動態連結程式
10.4 使用PLT的惰性過程連結
10.5動態連結的其他特性
10.6 運行時的動態連結
10.7微軟動態程式庫
10.8 OSF/1偽靜態共享庫
10.9 讓共享庫快一些
10.10 幾種動態連結方法的比較
練習
項目
第11章 高級技術
11.1 C++的技術
11.2 增量連結和重新連結
11.3 連結時的垃圾收集
11.4 連結時最佳化
11.5 連結時代碼生成
11.6 Java連結模型
練習
項目
參考文獻