其他语言

本类阅读TOP10

·基于Solaris 开发环境的整体构思
·使用AutoMake轻松生成Makefile
·BCB数据库图像保存技术
·GNU中的Makefile
·射频芯片nRF401天线设计的分析
·iframe 的自适应高度
·BCB之Socket通信
·软件企业如何实施CMM
·入门系列--OpenGL最简单的入门
·WIN95中日志钩子(JournalRecord Hook)的使用

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
[翻译]连接器和加载器::目录::!!!先睹为快!!!

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

连接器和加载器 - 目录

原著: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书籍

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




相关文章

相关软件