[翻译]连接器和加载器::目录::!!!先睹为快!!!

类别:编程语言 点击:0 评论:0 推荐:
连接器和加载器 - 目录

原著:John R. Levine
原文:收藏
翻译:lover_P

[译序]

    搞底层开发的至臻境界我想大概要算操作系统开发和编译器开发了。计算机,就其字面意义,无非是冷血废铁一块,之所以有血有肉,正是操作系统从中支撑,之所以有经有脉,那便是编译器的功劳了。然而,这血肉之躯如何令周身经脉游走自如,这周身经脉又如何牵动血肉之躯动停行止,却有如不为人知的秘密,令许多初涉底层的人感到神秘异常。这便是连接器和加载器的职责了。熟悉汇编语言程序设计的人应该知道,每当我们xasm后,必当link一番,源文件变成的二进制代码才肯乖乖地在特定的操作系统之上运行。而即使是link过的程序,也只是存在于磁盘或其他存储介质上的指令,如何依照操作系统的意愿将它们们搬运到内存中的指定位置并开始执行,loader功不可没。

    不幸的是,现在介绍操作系统和编译原理的书籍很多,但无论哪一方面的书籍、无论哪一本书,都忽略了连接和加载这一细节问题。偶尔提到,也不过是“编译之后经过连接即可生成可执行文件”或“操作系统将可执行文件加载到内存中的指定位置开始运行”云云。令狗狗(Google)发动灵鼻,爬遍“遍布世界的蜘蛛网(World Wide Web)”也难寻有关连接器和加载器的只言片语,只有少数文章介绍了.net加载器或Java加载器,也无非是宣传其如何如何安全、如何如何快速等等,毫无实际意义可言。

    然而,本书却可称得上是“唯一”一本极详细介绍连接器和加载器的文献了。本书说不上偏重理论还是实践,抑或是偏重方法,总之是一本极为实用的书。

    [注]英文link一词及其衍生词(如linker、Dynamic link library)通常被翻译为“链接”、“链接器”或“动态链接库”;而我在本书的翻译过程中却将它们译为“连接”、“连接器”、“动态连接库”等,这是出于这一术语的动作特征而做出的决定。“链接”通常指根据给出的标识找到特定的目标的过程,而“连接”大有“连续地放到一起”的意味。我们知道linking这个过程指的是将一个程序各个片段的代码绑定为一个逻辑上的整体,以形成可执行程序,因此,使用“连接”一词才更为恰当。

[内容]

小目录

第0章 写在前面 第1章 连接和加载 第2章 架构问题 第3章 目标文件 第4章 存储分配 第5章 符号管理 第6章 库 第7章 重定位 第8章 加载和复用 第9章 共享库 第10章 动态连接和加载 第11章 高级技术 第12章 参考

详细目录

第0章 写在前面 献给 简介 谁应该阅读本书? 章节预览 项目 感谢 联系我们 第1章 连接和加载 连接器和加载器都做些什么? 地址绑定:一个历史性观点 连接 VS 加载 两遍连接 目标代码库 重定位和代码修正 编译驱动器 连接器命令语言 连接:一个真实的例子 练习 第2章 架构问题 应用程序二进制接口 存储器地址 字节顺序和对齐 地址格式 指令格式 程序调用和可定地址性 程序调用 数据和指令引用 IBM 370 SPARC SPARC V8 SPARC V9 Inter x86 分页和虚拟存储 程序地址空间 映射文件 共享库和程序 位置无关的代码 Intel 386 中的分段 嵌入式架构 地址空间槽 非一致存储 存储对齐 练习 第3章 目标文件 一个目标文件中都有什么? 设计一个目标格式 无格式的目标格式:MS-DOS .COM文件 代码节:Unix a.out文件 a.out头 与虚拟存储器交互 重定位:MS-DOS EXE文件 符号和重定位 可重定位的a.out 重定位入口 符号和字符串 a.out小结 Unix ELF 可重定位文件 ELF可执行文件 ELF小结 IBM 360目标格式 ESD记录 TXT记录 RLD记录 END记录 小结 Microsoft可移植可执行格式 PE专用节 运行一个PE可执行文件 PE和COFF PE小结 Intel/Microsoft OMF文件 OMF记录 OMF文件的细节 OMF小结 目标格式的对比 项目 练习 第4章 存储器分配 节和地址 简单的存储器布局 多重节类型 节和页面对齐 公共块和其他特殊节 公共 C++副本调动 初始化器和终止化器 特殊表 x86节存储器分配 连接器控制脚本 嵌入式系统的存储器分配 实践中的存储器分配 Unix a.out连接器中的存储器分配 ELF中的存储器分配 Windows连接器中的存储器分配 练习 第5章 符号管理 绑定和名字判定 符号表格式 模块符号表 全局符号表 符号判定 特殊符号 名字管理 简单的C和Fortran名字管理 C++类型编码:类型和作用域 连接时类型检查 弱外部符号和其他种类的符号 维护调试信息 行号信息 符号和变量信息 实践问题 练习 项目 第6章 库 库的目的 库格式 使用操作系统 Unix和Windows存档文件 Unix存档 64位扩展 Intel OMF库 创建库 搜索库 性能问题 练习 项目 第7章 重定位 硬件和软件重定位 连接时和加载时重定位 符号和节重定位 符号查找 基本重定位技术 指令重定位 x86指令重定位 SPARC指令重定位 ECOFF节重定位 ELF重定位 OMF重定位 可重连接和可重定位的输出格式 其他重定位格式 链式引用 位图 特殊段 重定位的特殊情况 练习 项目 第8章 加载和复用 基本加载 带重定位的基本加载 位置无关的代码 TSS/360位置无关代码 每例程(per-routine)指针表 内容表 ELF位置无关代码 PIC开销和优点 引导程序加载 树结构复用 复用的定义 复用的实现 复用的优点 数据 重复代码 多重区 复用小结 练习 项目 第9章 共享库 绑定时间 实践中的共享库 地址空间管理 共享库的结构 创建共享库 创建跳转表 创建共享库 创建存根库 版本名字 带有共享库的连接 带有共享库的运行 malloc漏洞——另一个共享库问题 练习 项目 第10章 动态连接和加载 ELF动态连接 一个ELF文件的内容 加载一个动态连接的程序 启动动态连接器 查找库 共享库的初始化 带有PLT的程序迟连接 动态连接的其它特征 静态初始化 库版本 运行时动态加载 Microsoft动态连接库 PE文件中的导入和导出符号 迟绑定 DLL和线程 OSF/1伪静态共享库 令共享库更快 动态连接方法的比较 第11章 高级技术 C++技术 试连接 重复代码消除 数据库方法 增量连接和重连接 连接时垃圾收集 连接时优化 连接时代码生成 连接时剖析和编配 连接时汇编器 加载时代码生成 Java连接模型 加载Java类 练习 项目 第12章 参考 Perl书籍

    最后,让我们一起期待着这本书的出炉吧~~

本文地址:http://com.8s8s.com/it/it28436.htm