链接器和加载器 | PDF下载|ePub下载
类别: 计算机
作者:[美] Gayle Laakmann McDowell
出版社: 人民邮电出版社
原作名: Cracking the coding interview:150 programming questions and solutions,fifth edition
译者:李琳骁/漆犇
出版年: 2013-11
页数: 372
定价: 59.00元
装帧: 平装
ISBN: 9787115332912
出版社: 人民邮电出版社
原作名: Cracking the coding interview:150 programming questions and solutions,fifth edition
译者:李琳骁/漆犇
出版年: 2013-11
页数: 372
定价: 59.00元
装帧: 平装
ISBN: 9787115332912
内容简介 · · · · · ·
本书讲述构建程序的关键工具——链接器和加载器,内容包括链接和加载、体系结构、目标文件、存储分配、符号管理、库、重定位、加载和覆盖、共享库、动态链接和加载、动态链接的共享库,以及着眼于成熟的现代链接器所做的一些变化;并介绍一个持续的实践项目,即使用Perl语言开发一个可用的小链接器。本书适合高校计算机相关专业的学生、实习程序员、语言设计者和开发人员阅读参考。
目录 · · · · · ·
译者序
前言
第1章 链接和加载 1
1.1 链接器和加载器做什么 1
1.2 从历史发展的角度分析地址绑定 1
1.3 链接与加载 3
1.4 编译驱动器 7
1.5 链接:一个真实的例子 9
1.6 练习 12
第2章 体系结构相关问题 13
2.1 应用程序二进制接口 13
2.2 内存地址 13
2.3 地址构成规则 15
2.4 指令格式 15
2.5 过程调用和可寻址性 16
2.6 数据访问和指令引用 19
2.7 分页和虚拟内存 24
2.8 Intel 386分段 29
2.9 嵌入式体系结构 31
2.10 练习 32
第3章 目标文件 35
3.1 目标文件中有什么 35
3.2 空目标文件格式:MS-DOS的.COM文件 36
3.3 代码分段:UNIX的a.out文件 36
3.4 重定位:MS-DOS的EXE文件 41
3.5 符号和重定位 43
3.6 可重定位的a.out格式 43
3.7 UNIX ELF格式 45
3.8 IBM 360目标文件格式 52
3.9 微软的可移植可执行文件格式 55
3.10 Intel/Microsoft的OMF文件格式 61
3.11 不同目标文件格式的比较 65
3.12 练习 66
3.13 项目 66
第4章 存储空间管理 69
4.1 段和地址 69
4.2 简单的存储布局 69
4.3 多种类型的段 70
4.4 段与页面的对齐 72
4.5 公共块和其他特殊段 72
4.6 链接器控制脚本 79
4.7 嵌入式系统的存储分配 81
4.8 实际使用的存储分配策略 81
4.9 练习 84
4.10 项目 85
第5章 符号管理 87
5.1 符号名绑定和解析 87
5.2 符号表的格式 87
5.3 名称修改 92
5.4 弱外部符号和其他类型的符号 95
5.5 维护调试信息 96
5.6 练习 98
5.7 项目 98
第6章 库 99
6.1 库的目的 99
6.2 库的格式 99
6.3 创建库文件 103
6.4 搜索库文件 104
6.5 性能问题 105
6.6 弱外部符号 105
6.7 练习 106
6.8 项目 106
第7章 重定位 109
7.1 硬件和软件重定位 109
7.2 链接时重定位和加载时重定位 110
7.3 符号重定位和段重定位 110
7.4 基本的重定位技术 111
7.5 可重链接和可重定位的输出格式 116
7.6 重定位项的其他格式 117
7.7 特殊情况的重定位 118
7.8 练习 118
7.9 项目 119
第8章 加载和覆盖 121
8.1 基本的加载过程 121
8.2 带重定位的基本加载过程 122
8.3 位置无关代码 122
8.4 自举加载 127
8.5 基于树状结构的覆盖技术 128
8.6 练习 133
8.7 项目 133
第9章 共享库 135
9.1 绑定时间 136
9.2 实际使用的共享库 136
9.3 地址空间管理 137
9.4 共享库的结构 138
9.5 创建共享库 138
9.6 链接时使用共享库 141
9.7 运行时使用共享库 141
9.8 malloc的处理以及其他共享库问题 142
9.9 练习 144
9.10 项目 144
第10章 动态链接和加载 147
10.1 ELF动态链接 147
10.2 ELF文件的内容 147
10.3 加载动态链接的程序 150
10.4 基于PLT的延迟过程链接 152
10.5 动态链接的其他特性 153
10.6 运行时的动态链接 154
10.7 Microsoft动态链接库 154
10.8 OSF/1伪静态共享库 158
10.9 让共享库快一些 158
10.10 几种动态链接方法的比较 159
10.11 练习 160
10.12 项目 161
第11章 高级技术 163
11.1 C++的链接技术 163
11.2 增量链接和重链接 166
11.3 链接时的垃圾收集 167
11.4 链接时优化 168
11.5 链接时代码生成 169
11.6 Java的链接模式 171
11.7 练习 174
11.8 项目 174
参考文献 175
· · · · · ·
前言
第1章 链接和加载 1
1.1 链接器和加载器做什么 1
1.2 从历史发展的角度分析地址绑定 1
1.3 链接与加载 3
1.4 编译驱动器 7
1.5 链接:一个真实的例子 9
1.6 练习 12
第2章 体系结构相关问题 13
2.1 应用程序二进制接口 13
2.2 内存地址 13
2.3 地址构成规则 15
2.4 指令格式 15
2.5 过程调用和可寻址性 16
2.6 数据访问和指令引用 19
2.7 分页和虚拟内存 24
2.8 Intel 386分段 29
2.9 嵌入式体系结构 31
2.10 练习 32
第3章 目标文件 35
3.1 目标文件中有什么 35
3.2 空目标文件格式:MS-DOS的.COM文件 36
3.3 代码分段:UNIX的a.out文件 36
3.4 重定位:MS-DOS的EXE文件 41
3.5 符号和重定位 43
3.6 可重定位的a.out格式 43
3.7 UNIX ELF格式 45
3.8 IBM 360目标文件格式 52
3.9 微软的可移植可执行文件格式 55
3.10 Intel/Microsoft的OMF文件格式 61
3.11 不同目标文件格式的比较 65
3.12 练习 66
3.13 项目 66
第4章 存储空间管理 69
4.1 段和地址 69
4.2 简单的存储布局 69
4.3 多种类型的段 70
4.4 段与页面的对齐 72
4.5 公共块和其他特殊段 72
4.6 链接器控制脚本 79
4.7 嵌入式系统的存储分配 81
4.8 实际使用的存储分配策略 81
4.9 练习 84
4.10 项目 85
第5章 符号管理 87
5.1 符号名绑定和解析 87
5.2 符号表的格式 87
5.3 名称修改 92
5.4 弱外部符号和其他类型的符号 95
5.5 维护调试信息 96
5.6 练习 98
5.7 项目 98
第6章 库 99
6.1 库的目的 99
6.2 库的格式 99
6.3 创建库文件 103
6.4 搜索库文件 104
6.5 性能问题 105
6.6 弱外部符号 105
6.7 练习 106
6.8 项目 106
第7章 重定位 109
7.1 硬件和软件重定位 109
7.2 链接时重定位和加载时重定位 110
7.3 符号重定位和段重定位 110
7.4 基本的重定位技术 111
7.5 可重链接和可重定位的输出格式 116
7.6 重定位项的其他格式 117
7.7 特殊情况的重定位 118
7.8 练习 118
7.9 项目 119
第8章 加载和覆盖 121
8.1 基本的加载过程 121
8.2 带重定位的基本加载过程 122
8.3 位置无关代码 122
8.4 自举加载 127
8.5 基于树状结构的覆盖技术 128
8.6 练习 133
8.7 项目 133
第9章 共享库 135
9.1 绑定时间 136
9.2 实际使用的共享库 136
9.3 地址空间管理 137
9.4 共享库的结构 138
9.5 创建共享库 138
9.6 链接时使用共享库 141
9.7 运行时使用共享库 141
9.8 malloc的处理以及其他共享库问题 142
9.9 练习 144
9.10 项目 144
第10章 动态链接和加载 147
10.1 ELF动态链接 147
10.2 ELF文件的内容 147
10.3 加载动态链接的程序 150
10.4 基于PLT的延迟过程链接 152
10.5 动态链接的其他特性 153
10.6 运行时的动态链接 154
10.7 Microsoft动态链接库 154
10.8 OSF/1伪静态共享库 158
10.9 让共享库快一些 158
10.10 几种动态链接方法的比较 159
10.11 练习 160
10.12 项目 161
第11章 高级技术 163
11.1 C++的链接技术 163
11.2 增量链接和重链接 166
11.3 链接时的垃圾收集 167
11.4 链接时优化 168
11.5 链接时代码生成 169
11.6 Java的链接模式 171
11.7 练习 174
11.8 项目 174
参考文献 175
· · · · · ·
发表回复
要发表评论,您必须先登录。