in fact , Now on the market and the network can be found in the computer technology books and materials , Everything is complete , Only about these three themes （ link , Load and Library
） There is a scarcity of discussion , Even if we can find some, it's just like incomplete classics , Not only is it incomplete, but many are obsolete . About the current general Windows and Liunx Links to platforms , Loading and PE/ELF Detailed analysis of documents , It's very rare . In this field , The most complete , And the most authoritative John
R. Levine Of Linkers
&Loaders, I have read this book through several times , Although it describes the linking and loading aspects completely , But it's too theoretical , The description of the actual system mechanism is too brief .
What will you learn
This book will describe in detail the popular Windows and Linux The executable files under the operating system , Target file format ; ordinary CIC++ How the program code is compiled into the object file and how the program is stored in the object file ; How are target files linked together by linkers , And form an executable file ; Symbol processing of target file at link time , How do relocation and address assignment work ; How can an executable be loaded and executed ; How does the executable map to the virtual space of a process ; What is dynamic linking , Why dynamic linking ;Windows
and Linux How to carry out dynamic link and related problems in dynamic link ; What is a heap , What is a stack : Function call conventions ; Runtime ,Glibe and MSVC
CRT Implementation analysis of : System call and AP; Finally, we realized one ourselves Mini CRT.
In this book , We try to avoid asking readers to have a lot of basic knowledge , But it is inevitable that there are some requirements . This includes the right to CIC++ Basic understanding of programming language ,x86 Fundamentals of assembly language , Basic concepts of operating system and basic programming skills and basic concepts of computer system structure .
The book is divided into 4 gross , They are as follows ：
The first 1 part brief introduction
The first 1 chapter Consider the past you shall know the future
Introduce the basic background knowledge , Including hardware . operating system . Thread, etc .
The first 2 part Static link
The first 2 chapter Compiling and linking
This paper introduces the basic concepts and steps of compiling and linking .
The first 3 chapter What's in the target file
introduce COFF How to store the Japanese standard file format and source code in the target file after translation .
The first 4 chapter Static link
This paper introduces the process and steps of static linking and static library linking .
The first 5 chapter Windows PE/COFF
introduce Windows Target file and executable file format of the platform .
The first 3 part Loading and dynamic linking
The first 6 chapter Loading and process of executable file
Introduce the concept of process , Distribution of process address space and loading process of executable file mapping .
The first 7 chapter dynamic link
with Linux Under the .so The process of dynamic linking is analyzed in detail based on shared library .
The first 8 chapter Linux Organization of shared libraries
introduce Linux Distribution and organization of shared library files under .
The first 9 chapter Windows Dynamic link under
introduce Windows Under the system DLL Dynamic link mechanism .
The first 4 part Library and runtime
The first 10 chapter Memory
This paper mainly introduces heap and stack , Heap allocation algorithm , Function call stack distribution .
The first 11 chapter Runtime .
This paper mainly introduces the concept of runtime .CIC++ Runtime ,Glibe and MSVC CRT, How to implement runtime C++ Global construction and Deconstruction fread() Library function is taken as an example to analyze the runtime .
The first 12 chapter System call and API
Main introduction Linux and Windows System call and Windows Of API.
The first 13 chapter Runtime implementation
This chapter mainly implements a support heap , Basic file operation , format string , Basic input and output ,C++ new/delete. C++ string. C++ Globally constructed and destructed Mini
This 《 Programmer's self thought 》 E-books total 483 page , Friends who need the full version can get it in the following ways .