linker and loader 中文版

所需积分/C币:50 2019-03-19 16:43:28 5.24MB PDF
61
收藏 收藏
举报

中文版的linker and loader 送给那些英文头大的朋友,非扫描版
内容目录 第0章引子 献给 音音 垂·看垂垂 10 介绍 ·.·····.·..···.··············..···.·······.··········. 本书的目标读者是哪些人? 章节摘要 ········.··.·::············.····.·..······························ 项∏ 12 致谢. 联系我们. 13 第1章链接和加载 链接器和加载器做什么? 14 地址绑定:从历史的角度 141 链接与加载 16 两遍链接…… 17 目标代码库….… .18 重定位和代码修改. 编译器驱动. 链接器命令语言.… 21 链接:一个真实的例子 练习 垂希垂音垂 26 第2章体系结构的问题... 27 应用程序二进制接口.… ……,27 内存地址 27 字节顺序和对齐 地址构成. 29 指令格式 29 过程调用和可寻址性 过程调用. .30 数据和指令引用 32 IBM 370 32 SPARC SPAROⅤ8. ……34 SParC V9 4 Intel x86 36 分页和牌拟内存… 春·。看看 37 程序地址空间 着垂着 垂垂·垂 映射文件 共亨库和程序 着垂 41 位置无关代码. Intel386分段 D音垂 嵌入式体系结构… 垂着·,垂垂垂 怪异的地址空间. 44 非一致性内存 内存对齐. 44 练习 ……44 第3章目标文件 目标文件中都有什么2 设计一个目标文件格式 空目标文件格式:MS-DOS的COM文件 代码区段: Unix a.out文件. aout头部 50 与虚拟内存的交互 重定位: MS-DOS EXE文件 54 符号和重定位 56 川重定位的aout格式 重定位项. 58 符号和字串 59 aout格式小结 Unix Ele格式 ·垂·垂垂 60 可重定位文件 ELF可执行文件 66 ELF格式小结 看垂垂。·垂垂垂;·看看看垂,垂垂垂 音垂。音垂音垂·垂音D音垂音垂音。··4垂垂·垂垂垂音垂 .68 IBM360目标格式 68 ESD in ………69 TXT记录 70 RLD记录 70 END记录 小结 71 微软可移植可执行体格式… PE特有区段 .76 运行PE可执行文件. 7 PE和COFF 78 PE文件小结… ………………,78 Intel/ microsoft的OMF文件格式 78 OMF记录.….....….…….…79 OMF文件的细节 :· .80 OMF格式小结. ·垂。·看看垂4 82 不同标格式的比较 .82 项目 练习 第4章存储空间分配 鲁,息·······命···母寺帝辛·····非··●······看母·····鲁···········香香中···鲁,·······看香母中命辛·····鲁······· 段和地址 85 简单的存储布局 多种段类型. ·垂看。看垂垂垂 87 段与贞面的对齐 公共块和其它特殊段. ····.··············· 88 公共块 89 C++重复代码消除 , 初始化和终结 IBM伪寄存器. 93 特殊的表 X86分段的存储分配. 95 链接器控制脚本 嵌入式系统的存储分配. 97 实际中的存储分配 98 Unix a.ou链接器的存储分配策略. ELF中的存储分配策略. Windows链接器的存储分配策略. 101 练 102 项目 103 第5章符号管理. 104 绑定和名字解析 104 符号表格式 104 模块表 106 全局符号表 ∴108 符号解析 特殊符号. 110 名称修改 110 简单的C和 Fortran名称修改 110 +类型编码:类型和范围.…….11 链接时类型检查 113 弱外部符号和其它类型符号 13 维护调试信息. 113 行号信息 ·垂·垂·非·看垂着垂D·。垂·看垂 114 符号和变量信息 114 实际的问题. 练习 115 项目 16 第6章库 117 库的目的 117 库的格式 17 使用操作系统 117 UNIX和 Windows的 Archive文件. ,;音;音;看着垂4·音,D垂音垂音垂。看4垂垂垂。垂音垂;看看垂,看D非垂垂 118 扩展到64位 120 Intel OMF库文件… 120 建立库文件 121 搜索库文件 122 性能问题 123 弱外部符号 123 练习 124 项日 124 第7章重定位 126 硬件和软件重定位. 126 链接时重定位和加载时重定位.. 127 符号和段重定位… 着看垂 127 符号查找. 128 基本的重定位技术…… 128 指令重定位 129 ECOFF段重定位… 131 ELF重定位… 132 OMF重定位 132 可重链接和重定位的输出格式 其它重定位格式 133 以链表形式组织的引用. ∴133 以位图形式组织的引用 特殊段. 134 特殊情况的重定位.… 135 练习 135 项目 垂;垂4p·。音垂·垂垂·垂·垂·看看,4··。.垂垂··4垂垂4,D,垂音。垂·;;·垂,垂垂垂垂非垂。.垂音4看垂垂垂垂。垂。垂垂音垂 135 第8章加载和重叠 ●····香 137 基木加载 …,…………………………,…………………………137 带重定位的基本加载 …138 位置无关代码. 影·垂。·。垂垂音垂看垂4BD垂垂垂·垂看看垂垂垂垂垂垂。。垂垂DDD垂垂垂。垂看看垂垂·垂垂垂垂 138 TSS360位置无关代码 138 例程指针表 …………………,……………140 ∏录表 .141 ELF位置无关代码. 141 位置无关代码的开销和得益. 143 自举加载 144 树状结构的覆盖. 145 定义覆盖… 147 覆盖的实现. 149 覆盖的其它细节 ,··平····,·· 150 覆盖技术小结 151 练习 151 项目. 151 第9章共享库 153 绑定时间… 154 实际的共享库 155 地址空间管理. 155 共享库的结构 ·看垂 .156 创建共享库 156 创建跳转表 157 创建共亨库 158 创建空占位库 158 版本命名… 159 使用共享库链接 .159 使用共亨库运行 .160 malloc hack和其它共享库问题 着D垂垂·音垂音·音看垂·垂4着D看垂,垂,··看看垂 160 练习 163 项目 163 第10章动态链接和加载165 ELF动态链接 …165 EIF文件内容 165 加载一个动态链接的程序 168 启动动态链接器. .169 库的查找.…… 169 共享库的初始化. D垂。·垂垂 使用PLT的惰性过程链接( lazy procedure linkage)… 171 动态链接的其它特性… 垂非垂垂 …………………172 静态的初始化 172 库的版本 ·垂垂·非·看垂着垂D·。垂·看 运行时的动态链接 173 Microsoft动态链接库…........74 PE文件中的输入输出符号( imported and exported symbol) 174 惰性绑定 :···;;··············::··.:·;;·········· 177 DLL库和线程 垂D。垂 ∴178 OSF/1伪静态共享库 178 让共享库快一些 …179 几种动态链接方法的比较 179 练习 …………,……,…………,……180 项 l81 第11章高级技术 中··中中中命命中中4··中中中中中中中·中中命中中中·中中中中中中命中中寺中中中中中中中命命中中中中中中中中中·中中中中命命 182 C++的技术 182 试验链接. 183 消除重复代码 …………………………………184 借助于数据库的方法 增量链接和重新链接... 185 链接时的垃圾收集. 187 链接时优化. 188 链接时代码生成. 189 链接时统计和工具. 190 链接时汇编... 190 加载时代码生成 ava链接模式, 191 加载Java类 .192 练习 193 项目 194 第0章引子 REvision: 2.2 $Date:1999/06/0900:48:48$ 献给 我的家人,托妮亚和莎拉。 介绍 几乎从有计算机以来,链接器和加载器就是软件开发工具包中的一部分,因为他们是 允许使用模块(而不是一个单独的大文件)来构建程序的关键工具。 早在1947年,程序员们就开始使用原始的加载器:将程序的例程存储在多个不同的磁 带上,并将他们合并、重定位为一个程序。在上世纪60年代早期,这些加载器就已经发展 的相当完善了。由于那时内存很贵且容量有限,计算机的速度(以今天的标准)很慢,为了 创建复杂的内存覆盖策略(将大容量的程序加在到少量的内存中),以及重复编辑之前链接 过的文件(节省重新创建程序的时间),这些链接器都包含了很多复杂的特性。 上世纪70到80年代,链接技术几乎没有什么进展。链接器趋向于更加简单,虚拟内存 技术将应用程序和覆盖机制中的大多数存储管理工作都转移给了操作系统,越来越快的计算 机和越来越大的磁盘也使得重新链接一个程序或替换个别模块比仅伩链接改变过的地方更加 睿易了。从上世纪90年代起,由于增加∫诸如动态链接共享库和C艹的诸多现代特性,链接 器又开始变得复杂起来。像IA64这样具有长指令字和编译时访存调度等特性的先进处理器 架构,也需要将一些新的特性加入钊链接器中以确保在被链接的程序中可以满疋代码的这些 复杂需求。 本书的目标读者是哪些人? 本书预计供下述几类读者使用 学生:由于链接过程看起来似乎是徴不足道和显而易见的,编译器构建和操作系统 课程通常对链接和加载都缺乏重视。这对于以前讨论 Fortan, Pasca1,C,和不使 用内存映射或共享库的操作系统而言可能是对的,但是现在就不那么正确了 C+,Java和其它的面向对象语言需要更加完善的链接环境。使用内存映射的可执 行程序,共享库,和动态链接影响了个操作系统的很多部分,·个忽略链接冋题 的操作系统设计者将承担巨大的风险。 实习程序员也需要知道链接器都做∫什么,尤其是对现代语言。C++在链接器中放 置了不少独特的特性,而大型C+程序容易发生难以诊断的bug也是由于在链接时 发生了不可预料的事情(最常见的情况是静态构造函数没有按照程序员预计的顺序 执行)。当正确使用时,诸如共享库和动态链接此类的链接器特性将(给程序员

...展开详情
试读 127P linker and loader 中文版
立即下载 身份认证后 购VIP低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
上传资源赚钱or赚积分
最新推荐
linker and loader 中文版 50积分/C币 立即下载
1/127
linker and loader 中文版第1页
linker and loader 中文版第2页
linker and loader 中文版第3页
linker and loader 中文版第4页
linker and loader 中文版第5页
linker and loader 中文版第6页
linker and loader 中文版第7页
linker and loader 中文版第8页
linker and loader 中文版第9页
linker and loader 中文版第10页
linker and loader 中文版第11页
linker and loader 中文版第12页
linker and loader 中文版第13页
linker and loader 中文版第14页
linker and loader 中文版第15页
linker and loader 中文版第16页
linker and loader 中文版第17页
linker and loader 中文版第18页
linker and loader 中文版第19页
linker and loader 中文版第20页

试读结束, 可继续阅读

50积分/C币 立即下载