前言
事實上,現在市面上和網路上能找到的計算機技術方面的書籍和資料中,什么都很齊全,唯獨關于這三個主題(鏈接、裝載與庫)的討論十分稀缺,即使能找到一些也是猶如殘缺的典籍,不僅不完整而且很多已經過時了,關于現在通用的Windows和Liunx平臺的鏈接、裝載及PE/ELF檔案的詳細分析,實在很少見,這個領域中,最為完整、也最為權威的莫過于John R. Levine的Linkers &Loaders,這本書我也前前后后通讀了好幾遍,雖然它對鏈接和裝載方面的描述較為完整,但是過于理論化,對于實際的系統機制描述則過于簡略,

你將學到什么
本書將詳細描述現在流行的Windows和Linux作業系統下各自的可執行檔案,目標檔案格式;普通CIC++程式代碼如何被編譯成目標檔案及程式在目標檔案中如何存盤;目標檔案如何被聯結器鏈接到一起,并且形成可執行檔案;目標檔案在鏈接時符號處理、重定位和地址分配如何進行;可執行檔案如何被裝載并且執行;可執行檔案與行程的虛擬空間之間如何映射;什么是動態鏈接,為什么要進行動態鏈接;Windows 和Linux如何進行動態鏈接及動態鏈接時的相關問題;什么是堆,什么是堆疊:函式呼叫慣例;運行庫,Glibe 和MSVC CRT的實作分析:系統呼叫與AP;最后我們自己還實作了一個Mini CRT,
應當具備的基礎知識
在本書中,我們盡量避免要求讀者有很多的基礎知識,但難免有些要求,其中包括對CIC++編程語言的基本了解、x86匯編語言基礎、作業系統基本概念及基本編程技巧和計算機系統結構的基本概念,
內容
本書分為4大部分,分別如下:
第1部分 簡介
第1章 溫故而知新
介紹基本的背景知識,包括硬體,作業系統,執行緒等,

第2部分 靜態鏈接
第2章 編譯和鏈接
介紹編譯和鏈接的基本概念和步驟,

第3章 目標檔案里有什么
介紹COFF日標檔案格式和源代碼鳊譯后如何在目標檔案中存盤,

第4章 靜態鏈接
介紹靜態鏈接與靜態庫鏈接的程序和步驟,

第5章 Windows PE/COFF
介紹Windows平臺的目標檔案和可執行檔案格式,

第3部分 裝載與動態鏈接
第6章 可執行檔案的裝載與行程
介紹行程的概念、行程地址空間的分布和可執行檔案映射裝載程序,

第7章 動態鏈接
以Linux下的.so共享庫為基礎詳細分析了動態鏈接的程序,

第8章 Linux 共享庫的組織
介紹Linux下共享庫檔案的分布和組織,

第9章 Windows 下的動態鏈接
介紹Windows系統下DLL動態鏈接機制,

第4部分 庫與運行庫
第10章 記憶體
主要介紹堆與堆疊,堆的分配演算法,函式呼叫堆疊分布,

第11章 運行庫.
主要介紹運行庫的概念,CIC++運行庫、Glibe 和MSVC CRT、運行庫如何實作C++全域構造和析構及以fread()庫函式為例對運行庫進行剖析,

第12章 系統呼叫與API
主要介紹Linux和Windows的系統呼叫及Windows的API.

第13章 運行庫實作
本章主要實作了一個支持堆、基本檔案操作、格式化字串、基本輸入輸出、C++ new/delete. C++ string. C++ 全域構造和析構的Mini CRT.


這份《程式員的自我思想》電子書籍總共483頁,需要完整版的朋友可以以下方式獲取,


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/225339.html
標籤:其他
上一篇:微服務架構太難了?那你可能還沒掌握SpringBoot+SpringCloud+Docker+RabbitMQ
下一篇:我的第一篇博客
