内容简介 · · · · · ·
这本书主要介绍系统软件的运行机制和原理,涉及在Windows和Linux两个系统平台上,一个应用程序在编译、链接和运行时刻所发生的各种事项,包括:代码指令是如何保存的,库文件如何与应用程序代码静态链接,应用程序如何被装载到内存中并开始运行,动态链接如何实现,C/C++运行库的工作原理,以及操作系统提供的系统服务是如何被调用的。每个技术专题都配备了大量图、表和代码实例,力求将复杂的机制以简洁的形式表达出来。本书最后还提供了一个小巧且跨平台的C/C++运行库MiniCRT,综合展示了与运行库相关的各种技术。
对装载、链接和库进行了深入浅出的剖析,并且辅以大量的例子和图表,可以作为计算机软件专业和其他相关专业大学本科高年级学生深入学习系统软件的参考书。同时,还可作为各行业从事软件开发的工程师、研究人员以及其他对系统软件实现机制和技术感兴趣者的自学教材。
程序员的自我修养的创作者
· · · · · ·
-
俞甲子 作者
目录 · · · · · ·
第1部分 简介
第1章 温故而知新
1.1 从HELLO WORLD 说起
1.2 万变不离其宗
1.3 站得高,望得远
1.4 操作系统做什么
1.5 内存不够怎么办
1.6 众人拾柴火焰高
1.7 本章小结
第2部分 静态链接
第2章 编译和链接
2.1 被隐藏了的过程
2.2 编译器做了什么
2.3 链接器年龄比编译器长
2.4 模块拼装——静态链接
2.5 本章小结
第3章 目标文件里有什么
3.1 目标文件的格式
3.2 目标文件是什么样的
3.3 挖掘SIMPLESECTION.O
3.4 ELF 文件结构描述
3.5 链接的接口——符号
3.6 调试信息
3.7 本章小结
第4章 静态链接
4.1 空间与地址分配
4.2 符号解析与重定位
4.3 COMMON 块
4.4 C++相关问题
4.5 静态库链接
4.6 链接过程控制
4.7 BFD 库
4.8 本章小结
第5章 WINDOWS PE/COFF
5.1 WINDOWS 的二进制文件格式PE/COFF 134
5.2 PE 的前身——COFF
5.3 链接指示信息
5.4 调试信息
5.5 大家都有符号表
5.6 WINDOWS 下的ELF——PE
5.7 本章小结
第3部分 装载与动态链接
第6章 可执行文件的装载与进程
6.1 进程虚拟地址空间
6.2 装载的方式
6.3 从操作系统角度看可执行文件的装载
6.4 进程虚存空间分布
6.5 LINUX 内核装载ELF 过程简介
6.6 WINDOWS PE 的装载
6.7 本章小结
第7章 动态链接
7.1 为什么要动态链接
7.2 简单的动态链接例子
7.3 地址无关代码
7.4 延迟绑定(PLT)
7.5 动态链接相关结构
7.6 动态链接的步骤和实现
7.7 显式运行时链接
7.8 本章小结
第8章 LINUX 共享库的组织
8.1 共享库版本
8.2 符号版本
8.3 共享库系统路径
8.4 共享库查找过程
8.5 环境变量
8.6 共享库的创建和安装
8.7 本章小结
第9章 WINDOWS 下的动态链接
9.1 DLL 简介
9.2 符号导出导入表
9.3 DLL 优化
9.4 C++与动态链接
9.5 DLL HELL
9.6 本章小结
第4部分 库与运行库
第10章 内存
10.1 程序的内存布局
10.2 栈与调用惯例
10.3 堆与内存管理
10.4 本章小结
第11章 运行库
11.1 入口函数和程序初始化
11.2 C/C++运行库
11.3 运行库与多线程
11.4 C++全局构造与析构
11.5 FREAD 实现
11.6 本章小结
第12章 系统调用与API
12.1 系统调用介绍
12.2 系统调用原理
12.3 WINDOWS API
12.4 本章小结
第13章 运行库实现
13.1 C 语言运行库
13.2 如何使用MINI CRT
13.3 C++运行库实现
13.4 如何使用MINI CRT++
13.5 本章小结
附录A
A.1 字节序(BYTE ORDER)
A.2 ELF 常见段
A.3 常用开发工具命令行参考
索引
· · · · · · (收起)
第1章 温故而知新
1.1 从HELLO WORLD 说起
1.2 万变不离其宗
1.3 站得高,望得远
1.4 操作系统做什么
1.5 内存不够怎么办
1.6 众人拾柴火焰高
1.7 本章小结
第2部分 静态链接
第2章 编译和链接
2.1 被隐藏了的过程
2.2 编译器做了什么
2.3 链接器年龄比编译器长
2.4 模块拼装——静态链接
2.5 本章小结
第3章 目标文件里有什么
3.1 目标文件的格式
3.2 目标文件是什么样的
3.3 挖掘SIMPLESECTION.O
3.4 ELF 文件结构描述
3.5 链接的接口——符号
3.6 调试信息
3.7 本章小结
第4章 静态链接
4.1 空间与地址分配
4.2 符号解析与重定位
4.3 COMMON 块
4.4 C++相关问题
4.5 静态库链接
4.6 链接过程控制
4.7 BFD 库
4.8 本章小结
第5章 WINDOWS PE/COFF
5.1 WINDOWS 的二进制文件格式PE/COFF 134
5.2 PE 的前身——COFF
5.3 链接指示信息
5.4 调试信息
5.5 大家都有符号表
5.6 WINDOWS 下的ELF——PE
5.7 本章小结
第3部分 装载与动态链接
第6章 可执行文件的装载与进程
6.1 进程虚拟地址空间
6.2 装载的方式
6.3 从操作系统角度看可执行文件的装载
6.4 进程虚存空间分布
6.5 LINUX 内核装载ELF 过程简介
6.6 WINDOWS PE 的装载
6.7 本章小结
第7章 动态链接
7.1 为什么要动态链接
7.2 简单的动态链接例子
7.3 地址无关代码
7.4 延迟绑定(PLT)
7.5 动态链接相关结构
7.6 动态链接的步骤和实现
7.7 显式运行时链接
7.8 本章小结
第8章 LINUX 共享库的组织
8.1 共享库版本
8.2 符号版本
8.3 共享库系统路径
8.4 共享库查找过程
8.5 环境变量
8.6 共享库的创建和安装
8.7 本章小结
第9章 WINDOWS 下的动态链接
9.1 DLL 简介
9.2 符号导出导入表
9.3 DLL 优化
9.4 C++与动态链接
9.5 DLL HELL
9.6 本章小结
第4部分 库与运行库
第10章 内存
10.1 程序的内存布局
10.2 栈与调用惯例
10.3 堆与内存管理
10.4 本章小结
第11章 运行库
11.1 入口函数和程序初始化
11.2 C/C++运行库
11.3 运行库与多线程
11.4 C++全局构造与析构
11.5 FREAD 实现
11.6 本章小结
第12章 系统调用与API
12.1 系统调用介绍
12.2 系统调用原理
12.3 WINDOWS API
12.4 本章小结
第13章 运行库实现
13.1 C 语言运行库
13.2 如何使用MINI CRT
13.3 C++运行库实现
13.4 如何使用MINI CRT++
13.5 本章小结
附录A
A.1 字节序(BYTE ORDER)
A.2 ELF 常见段
A.3 常用开发工具命令行参考
索引
· · · · · · (收起)
喜欢读"程序员的自我修养"的人也喜欢的电子书 · · · · · ·
支持 Web、iPhone、iPad、Android 阅读器
喜欢读"程序员的自我修养"的人也喜欢 · · · · · ·
- STL源码剖析 8.7
- 程序员修炼之道 8.7
- Debug Hacks中文版 8.4
- 深度探索C++对象模型 9.0
- UNIX编程艺术 9.0
- 集体智慧编程 9.0
- 重构 9.0
- 深入理解计算机系统(原书第2版) 9.7
- Effective C++ 9.5
- 七周七语言 8.0
程序员的自我修养的书评 · · · · · · ( 全部 83 条 )
> 更多书评 83篇
论坛 · · · · · ·
请问看这本书之前需要先学习“编译原理”么? | 来自abc | 2023-10-27 20:00:25 | |
感觉 P197 P199 的表述容易产生误解 | 来自ChanceLi | 2023-09-29 02:40:51 | |
动态链接器自举前不能调用自己函数的正确性讨论 | 来自肥猫爱编程 | 1 回应 | 2023-09-19 13:52:13 |
【整理一下】书中的笔误 | 来自helinbo | 17 回应 | 2023-09-19 13:25:56 |
. | 来自forandom | 3 回应 | 2022-07-23 13:49:13 |
> 浏览更多话题
以下书单推荐 · · · · · · ( 全部 )
- 运行时系统 (baozii)
- 我的编程之路 (Yun)
- 37°暖书单(二) (37°暖)
- 编程C语言,Python等类书籍+知乎话题 (IVAN)
- 3.linux内核 (葡萄)
谁读这本书? · · · · · ·
二手市场
· · · · · ·
订阅关于程序员的自我修养的评论:
feed: rss 2.0
18 有用 邻家の躺平人 2015-04-11 19:46:34
就国内出版的书而言中上吧,如果有系统编程相关经验的话内容其实也只能算是扫盲级别的。书中错误其实还是蛮多的,严重的原则性错误大概有那么一两处,不碍事的小瑕疵基本散布在各个章节(后面重复出现EBP加加减减傻傻分不清楚我都快orz了...),还好基本不妨碍阅读所以也懒得写到笔记上,自己看的时候注意下就好了....
3 有用 机械唯物主义 2011-08-12 18:49:47
总算扫完了. 这本书还是当作工具书来用吧. 对操作系统和程序之间的层面有了一点基本的概念了.
2 有用 飘飘白云 2009-10-30 13:49:06
代码在编译之后是如何链接、装载以及运行的,程序员的高级读本
92 有用 第五象限 2010-09-27 13:49:02
解释多核CPU的局限时提到“就比如一个女人可以花10个月生出一个孩子,但是10个女人并不能在一个月就生出一个孩子一样。”
5 有用 载酒买花 2016-05-15 22:31:41
任何计算机的问题都可以通过增加一个层来解决。
0 有用 润Rhuen 2024-03-01 21:50:46 瑞士
好书,我看snitch runtime的时候读的
0 有用 Joshua 2024-01-22 11:06:53 上海
如果能更早读到就好了 很多都是自己费尽心思搜到的 其实这本书很多都讲到了 能节省很多时间
0 有用 白也 2024-01-20 17:13:04 湖北
这么多年了国内讲这个主题的书好像还是就这一本出名。前年翻了翻,也只是翻了翻,讲桩之类的内容让我想睡觉,所以基本没留什么细节的印象。最近在从头重读。
0 有用 Fisher Lin 2024-01-17 18:49:07 山东
大概翻了一下,系统编程的内容 很多win例子都是20年前的,严重过时了
0 有用 Leon 2024-01-11 22:36:15 北京
不错,讲了很多每个程序员都应该了解,但实际上很多人不了解的知识。很棒!