Linkers and Loaders 00

 
Chapter 00:前言
介绍:
自从有计算机开始,链接器(Linkers)和装载器(Loaders)就已经是必要软件包的一部分了,因为它们是模块化程序设计的关键工具。
早在1947年,程序员开始使用最初的装载器,把存储在各个磁带(Tapes)里的指令整合并重定位成可执行程序。到了60年代,这些装载器则进化成了成熟的链接编辑器。由于当时的内存相当昂贵和稀少,并且计算机的速度也很慢(以现在的标准),这些链接器有复杂的属性设置来处理内存重叠的数据结构,以便把大程序加载到小内存,并尽量减少运行的额外消耗。
从70年代到80年代,链接技术没有什么发展。链接器甚至变得更简单了,因为虚拟内存技术把大部分的内存管理工作从应用程序转移到了操作系统,并且随着计算机越来越快,磁盘空间越来越大,从重新创建一个链接好的程序文件比节省空间重新链接要容易的多。但是到了90年代,链接器又变复杂了,添加了许多新属性,例如动态链接共享库(dynamically linked shared libraries)和支持C++语言的一些特殊要求。同时现在最新的处理器结构,复杂的指令系统,和编译器托管(compiler-scheduled)的内存管理,例如IA64,将对链接器提出新的挑战,使链接程序代码更复杂。
工程简介:
从第3章到第11章用Perl语言建立了一个小而功能强大的链接器工程。虽然在商用链接器开发中不大可能使用Perl语言,但是作为教程却很好。与C或C++不同,Perl自动处理了许多低级的编程细节,使学生能集中处理算法和数据结构问题。Perl在大多数计算机上也是可以免费使用的,包括Windows 95/98和NT,Unix和Linux,并且有许多好的语言教材。
在第3章的初始工程里,建立了一个链接器的框架,能读写文件,生成简单而完整的目标文件格式。后续的章节加入许多的功能直到最后成为一个成熟的链接器,支持共享库(shared libraries),和生成可动态链接的目标(dynamically linkable objects)。
Perl还能很好的处理任意的2进制文件和数据结构,该链接器稍作修改就能处理本地目标格式(native object formats)。 

你可能感兴趣的:(Linkers and Loaders 00)