Linkers & Loaders 翻译版:探索链接与加载的奥秘
5星 · 超过95%的资源 需积分: 11 147 浏览量
更新于2024-08-02
收藏 7.22MB PDF 举报
"linker&loader.pdf"
这本书深入探讨了链接器和加载器在计算机系统中的作用,它们是程序从源代码到可执行文件的关键环节。链接器负责将编译后的对象文件合并,并解决符号引用,而加载器则在程序运行时将它们加载到内存中并进行地址绑定。
第1章介绍了链接和加载的基本概念。连接器的主要任务是组合多个目标文件(包含了编译后的代码和数据),解决函数和变量的引用,消除未定义的外部符号。载入器则在程序启动时,将已链接的可执行文件映射到内存中,为程序的执行做好准备。这一章还通过一个真实的例子展示了连接过程。
第2章讨论了不同体系结构对链接和加载的影响,如应用二进制接口(ABI)和内存地址的处理。讲解了如何在不同的处理器架构(如SPARC和Intel 386)中处理指令格式、过程调用以及数据和指令的寻址方式。此外,还涉及了嵌入式系统的特殊考虑。
第3章详细介绍了目标文件的结构,包括空目标格式、代码区、重定位信息以及不同平台的目标文件格式,如Unix的a.out、MS-DOS的COM和EXE文件,以及IBM360和Intel/Microsoft的格式。这些格式包含符号和重定位信息,是链接器工作的基础。
第4章聚焦于存储空间的分配,解释了段和地址的概念,以及如何根据不同的段类型进行存储布局。讨论了段对齐、公共块的处理,以及连接器控制脚本在决定内存分配中的作用。对于嵌入式系统,存储分配有其特殊性,这一章也对此进行了阐述。
第5章介绍了符号管理,包括符号的绑定和解析过程,符号表的格式,以及名字调整(如名字修饰)的过程。还涵盖了弱外部符号和其他类型的符号,以及调试信息的维护。
第6章专门探讨了链接库的使用和实现。库文件格式的多样性,如静态库和动态库,以及创建和搜索库文件的方法被详细解释。此外,还讨论了性能问题,特别是弱外部符号对链接行为的影响。
第7章讲解了重定位,这是连接过程中至关重要的一步,包括硬件和软件的重定位方式,以及链接时和加载时的重定位。书中列举了基本的重定位技术,并提到了可重链接和重定位的输出格式。
这本书深入解析了链接器和加载器的工作原理,覆盖了从目标文件的构造到程序在内存中的布局和执行的整个过程,对于理解计算机系统的底层运作机制非常有价值。
2012-01-14 上传
2019-01-29 上传
2018-08-28 上传
2023-07-19 上传
128 浏览量
2009-11-27 上传
2021-09-30 上传
四无新人
- 粉丝: 57
- 资源: 12
最新资源
- NotesAppJavascriptPractice:针对教程
- modelando-dominios-ricos-java:该项目旨在应用在AndréBaltieri的“建模富域”课程中介绍的概念。 关联
- MySQLtoHDF5:将 MySQL 数据库转换为 HDF5 文件
- mamamoneybookmarks:包含用于妈妈钱的书签列表
- AT89S51+MAX232+CD4053B+9014组成的原理图
- 1-求职简历-word-文件-简历模版免费分享-应届生-高颜值简历模版-个人简历模版-简约大气-大学生在校生-求职-实习
- qownnotes-overlay:QOwnNotes覆盖
- jsx-slack:从JSX为Slack Block Kit表面构建JSON对象
- JS_forelasning_1
- Ideal-Zen-Refonte-2021:理想的Zen Refonte 2021
- tabcmd_linux:在 Linux 中实现 Tableau 的 tabcmd 命令行实用程序
- Bdae
- Project-61160014-61160222
- Mysql学习并训练.zip
- 链表数据结构
- karashirl.github.io:项目组合