|
预备会员
- 帖子
- 4
- 精华
- 0
- 积分
- 0
- 书币
- 0 枚
- 注册时间
- 08-7-9
- 最后登录
- 09-4-22
|
1#
大 中
小 发表于 08-7-16 22:12 只看该作者
链接与加载(中文版)
链接与加载(中文版) |  | 收藏 | | | 作者 | unkonwn | | ISBN | unknown | | 出版日期/版本 | unknown | | 格式 | PDF Adobe Acrobat |
主题内容 | | 本书的目标读者是哪些人?
本书预计供下述几类读者使用。
? 学生:由于链接过程看起来似乎是微不足道和显而易见的,编译器构建和操作系统
课程通常对链接和加载都缺乏重视。这对于以前讨论Fortan,Pascal,C,和不使
用内存映射或共享库的操作系统而言可能是对的,但是现在就不那么正确了。
C++,Java和其它的面向对象语言需要更加完善的链接环境。使用内存映射的可执
行程序,共享库,和动态链接影响了一个操作系统的很多部分,一个忽略链接问题
的操作系统设计者将承担巨大的风险。
? 实习程序员也需要知道链接器都做了什么,尤其是对现代语言。C++在链接器中放
置了不少独特的特性,而大型C++程序容易发生难以诊断的bug也是由于在链接时
发生了不可预料的事情(最常见的情况是静态构造函数没有按照程序员预计的顺序
执行 )。 当正确使用时,诸如共享库和动态链接此类的链接器特性将(给程序员
的工作)带来很大的灵活性和强大支持。
? 语言设计者和开发人员应该在构建语言和编译器时了解链接器会做什么和能做什么。
由于可以由链接器处理某些细节,那些手工进行了30多年的编程任务今天在C++中
可以自动处理了(想一想在C语言中为了获取和C++中的模板相同的功能,或为了
保证在程序主体执行之前使成百个C源文件中的初始化例程可以执行,程序员不得
不做的那堆事情)。有了功能更强大的链接器的支持,未来的语言将更加自动化而
不仅限于程序范畴内的常规任务。由于链接是编译过程中将整个程序的代码放在一
起处理并可对程序作为一个整体施加影响的唯一阶段,因此链接器还将被加入更多
的全局程序优化功能。
(编写链接器的人员当然都需要本书。但是全球所有的链接器设计者大概只能坐满一个
房间,而且其中有半数因为审阅手稿已经拥有本书了。 )
章节摘要
第1章,链接和加载,对链接的过程进行了一个简短的历史回顾,并讨论链接过程中的
各个阶段,最后以一个可由输入目标文件产生显示“Hello,world”程序的简单却完整的链
接器实例结束本章。
第2章,体系结构问题,以链接器设计的角度来回顾计算机体系结构。这里会以典型的
精简指令集体系结构的SPARC,古老而富有活力的寄存器-内存体系结构的IBM 360/370,以
及自成一派的Intel x86体系结构为例。在每种体系结构中,会讨论包括内存架构、程序寻
址架构和地址布局等重要方面。
第3章,目标文件,探究了目标文件和可执行文件的内部结构。本章从最简单的MS-
DOS .COM文件开始,进而分析包括DOS的EXE,Wondows的COFF和PE(EXE和DLL),UNIX
的a.out和ELF,以及Intel/Microsoft的OMF等更加复杂的文件。
第4章,存贮分配,涵盖了链接过程的第一个阶段,即为被链接程序的各段分配存储空
间,跟以实际的链接器来举例。
第5章,符号管理,涵盖符号的绑定和解析,这是一个将某个文件中引用的另一个文件
的符号解析为机器地址的过程。
第6章,库,涵盖目标代码库的创建和使用,以及库的结构和性能问题。
第7章,重定位,涵盖地址重定位,即将程序内的目标代码调整为可以反映其运行时实
际地址的过程。这里同样谈到了位置无关代码(PIC),这种代码是通过无需重定位的方法
建立的,并讨论了这种方法的优势和代价。
第8章,加载和覆盖,涵盖了加载过程,即将程序从文件中取出装入计算机内存以运行。
本章还讨论了一种古老而有效的节省存储空间的树结构覆盖技术。
第9章,共享库,讨论了在不同程序中共享一个库代码的单一拷贝需要做哪些工作。本
章将注意力放在静态链接的共享库上。
第10章,动态链接和加载,将第9章的讨论延伸至动态链接的共享库。本章详细说明
了两个实例,Win32的动态链接库 (DLLs),和Unix/Linux的ELF共享库。
第11章,高级技术,着眼于成熟的现代链接器所做的一些变化。讨论C++需要的新特
性,包括编译命名格式(name mangling),全局构造与析构函数,模板扩充,和冗余代码的
消除。此外还包括如增量链接,链接时垃圾收集,链接时代码生成和优化,加载时代码生成,
统计和性能监视。本章对Java的链接模式进行了简要阐述,相对于本书涉及的其它链接器
它被认为更具有语义上的复杂性。
第12章,参考文献,这是一个带有说明的参考书目(第12章没有翻译,也没有归入翻
译稿中)。 |
附件: 您的会员级别暂时无法下载附件,请注册成为会员或者提升论坛权限,相关信息请参考新手指南!
|