首页| 行业标准| 论文文档| 电子资料| 图纸模型
购买积分 购买会员 激活码充值

您现在的位置是:团子下载站 > 其他 > 链接器和加载器是做什么的?《链接器和加载器》中文版电子教材免费下载

链接器和加载器是做什么的?《链接器和加载器》中文版电子教材免费下载

  • 资源大小:7.04 MB
  • 上传时间:2021-11-11
  • 下载次数:0次
  • 浏览次数:113次
  • 资源积分:1积分
  • 标      签: 编译器 程序 计算机

资 源 简 介

资料详情   《链接器和加载器》讲述构建程序的关键工具——链接器和加载器,内容包括链接和加载、体系结构、目标文件、存储分配、符号管理、库、重定位、加载和覆盖、共享库、动态链接和加载、动态链接的共享库,以及着眼于成熟的现代链接器所做的一些变化;并介绍一个持续的实践项目,即使用Perl语言开发一个可用的小链接器。   《链接器和加载器》适合高校计算机相关专业的学生、实习程序员、语言设计者和开发人员阅读参考。   只要有计算机,就会有连接器和加载器, 因为它们是非常重要的工具。 它们不但可以处理单一源文件,更可以处理多个输入模块, 从而产生目标代码。   早在1947年,程序员就开始使用加载器处理存放在分离磁带上上的代码,并且最终把它们整合,重定位在一个目标文件里。 到了上世纪60年代早期,这些加载器就发展的比较完善了。 因为那时内存仍旧很贵、很有限并且计算机的速度也比较慢(以现代计算机的速度比较), 连接器为了让大程序加载到较小的内存空间中,就建立了复杂的内存布局,为了让以前编译过的文件节省重构时间,它也做了一些优化。   上世纪70到80年代,连接技术几乎没有什么大的改进。 连接器趋向于变得更加简单, 虚拟存储技术的出现,把很多存储管理方面的工作从应用程序层面移到了操作系统里面, 随着计算机速度越来越快, 磁盘容量越来越大,通过替换少量模块的方式重新建立被链接程序要比仅仅链接程序中被修改的部分更加容易(译者注: 重新建立这里提到了两种方式:1,仅仅将修改过的部分编译后重新连接到程序中;2,将需要替换的模块重新编译后替换原先的模块。就这两种方法而言,后者更加容易一些)。到了90年代,连接器又变得复杂起来,增加了一些对当时流行特性的支持,如动态连接、共享库以及C++. 一些拥有扩展指令字长和编译器显式调度(译者注: 在IA64中确实存在此类方法,即在编写程序时向编译器显式的指定某些调度策略,从而优化程序运行,例如可以在程序中调用编译器的功能指定更高层次的流水线,我想这里可能就指的此类意思。)内存访问方式特性的新处理器架构,诸如IA-64, 将对连接器提出新需求,以确保目标文件中出现所需的代码.   第1章 链接和加载   1.1 链接器和加载器做什么?   1.2 地址绑定:从历史的角度   1.3 链接与加载   1.4 编译器驱动   1.5 链接:一个真实的例子   练习   第2章 体系结构的问题   2.1 应用程序二进制接口   2.2 内存地址   2.3 地址构成   2.4 指令格式   2.5 过程调用和寻址能力   2.6 数据和指令引用   2.7 分页和虚拟内存   2.8 Intel 386分段   2.9 嵌入式体系结构   练习   第3章 目标文件   3.1 目标文件中都有什么?   3.2 空目标文件格式:MS-DOS的COM文件   3.3 代码区段:UNIX的a.out文件   3.4 重定位:MS-DOS的EXE文件   3.5 符号和重定位   3.6 可重定位的a.out格式   3.7 UNIX的ELF格式   3.8 IBM 360目标格式   3.9 微软可移植可执行体格式   3.10 Intel/Microsoft的OMF文件格式   3.11 不同目标格式的比较   练习   项目   第4章 存储空间分配   4.1 段和地址   4.2 简单的存储布局   4.3 多种段类型   4.4 段与页面的对齐   4.5 公共块和其他特殊段   4.6 链接器控制脚本   4.7 实际中的存储分配   练习   项目   第5章 符号管理   5.1 绑定和名字解析   5.2 符号表格式   5.3 名称修改   5.4 弱外部符号和其他类型符号   5.5 维护调试信息   练习   项目   第6章 库   6.1 库的目的   6.2 库的格式   6.3 建立库文件   6.4 搜索库文件   6.5 性能问题   6.6 弱外部符号   练习   项目   第7章 重定位   7.1 硬件和软件重定位   7.2 链接时重定位和加载时重定位   7.3 符号和段重定位   7.4 基本的重定位技术   7.5 可重链接和重定位的输出格式   7.6 其他重定位格式   7.7 特殊情况的重定位   练习   项目   第8章 加载和覆盖   8.1 基本加载   8.2 带重定位的基本加载   8.3 位置无关代码   8.4 自举加载   8.5 树状结构的覆盖   练习   项目   第9章 共享库   9.1 绑定时间   9.2 实际的共享库   9.3 地址空间管理   9.4 共享库的结构   9.5 创建共享库   9.6 使用共享库链接   9.7 使用共享库运行   9.8 malloc hack和其他共享库问题   练习   项目   第10章 动态链接和加载   10.1 Elf动态链接   10.2 Elf文件内容   10.3 加载一个动态链接程序   10.4 使用PLT的惰性过程链接   10.5 动态链接的其他特性   10.6 运行时的动态链接   10.7 微软动态链接库   10.8 OSF/1伪静态共享库   10.9 让共享库快一些   10.10 几种动态链接方法的比较   练习   项目   第11章 高级技术   11.1 C++的技术   11.2 增量链接和重新链接   11.3 链接时的垃圾收集   11.4 链接时优化   11.5 链接时代码生成   11.6 Java链接模型   练习   项目   参考文献
VIP VIP