GitHub上超受欢迎程序员书籍链接装

白癜风是缺少铜吗 https://m-mip.39.net/disease/mip_9111264.html

前言

事实上,现在市面上和网络上能找到的计算机技术方面的书籍和资料中,什么都很齐全,唯独关于这三个主题(链接、装载与库)的讨论十分稀缺,即使能找到一些也是犹如残缺的典籍,不仅不完整而且很多已经过时了。关于现在通用的Windows和Liunx平台的链接、装载及PE/ELF文件的详细分析,实在很少见。这个领域中,最为完整、也最为权威的莫过于JohnR.Levine的LinkersLoaders,这本书我也前前后后通读了好几遍,虽然它对链接和装载方面的描述较为完整,但是过于理论化,对于实际的系统机制描述则过于简略。

你将学到什么

本书将详细描述现在流行的Windows和Linux操作系统下各自的可执行文件,目标文件格式;普通CIC++程序代码如何被编译成目标文件及程序在目标文件中如何存储;目标文件如何被链接器链接到一起,并且形成可执行文件;目标文件在链接时符号处理、重定位和地址分配如何进行;可执行文件如何被装载并且执行;可执行文件与进程的虛拟空间之间如何映射;什么是动态链接,为什么要进行动态链接;Windows和Linux如何进行动态链接及动态链接时的相关问题;什么是堆,什么是栈:函数调用惯例;运行库,Glibe和MSVCCRT的实现分析:系统调用与AP;最后我们自己还实现了一个MiniCRT。

应当具备的基础知识

在本书中,我们尽量避免要求读者有很多的基础知识,但难免有些要求。其中包括对CIC++编程语言的基本了解、x86汇编语言基础、操作系统基本概念及基本编程技巧和计算机系统结构的基本概念。

内容

本书分为4大部分,分别如下:

第1部分简介

第1章温故而知新

介绍基本的背景知识,包括硬件。操作系统。线程等。

第2部分静态链接

第2章编译和链接

介绍编译和链接的基本概念和步骤。

第3章目标文件里有什么

介绍COFF日标文件格式和源代码鳊译后如何在目标文件中存储。

第4章静态链接

介绍静态链接与静态库链接的过程和步骤。

第5章WindowsPE/COFF

介绍Windows平台的目标文件和可执行文件格式。

第3部分装载与动态链接

第6章可执行文件的装载与进程

介绍进程的概念、进程地址空间的分布和可执行文件映射装载过程。

第7章动态链接

以Linux下的.so共享库为基础详细分析了动态链接的过程。

第8章Linux共享库的组织

介绍Linux下共享库文件的分布和组织。

第9章Windows下的动态链接

介绍Windows系统下DLL动态链接机制。

第4部分库与运行库

第10章内存

主要介绍堆与栈,堆的分配算法,函数调用栈分布。

第11章运行库.

主要介绍运行库的概念。CIC++运行库、Glibe和MSVCCRT、运行库如何实现C++全局构造和析构及以fread()库函数为例对运行库进行剖析。

第12章系统调用与API

主要介绍Linux和Windows的系统调用及Windows的API.

第13章运行库实现

本章主要实现了一个支持堆、基本文件操作、格式化字符串、基本输入输出、C++new/delete.C++string.C++全局构造和析构的MiniCRT.

这份《程序员的自我思想》电子书籍总共页,需要完整版的朋友


转载请注明:http://www.aierlanlan.com/cyrz/2630.html