[译序] 【扩展信息:C#编写的用光盘做启动盘全程描述】
翻译:lover_p搞底层开发的至臻境界我想大概要算操作系统开发与编译器开发了.计算机,就其字面意义,无非是冷血废铁一块,之所以有血有肉,正是操作系统从中支撑,之所以有经有脉,那便是编译器的功劳了.然而,这血肉之躯如何令周身经脉游走自如,这周身经脉又如何牵动血肉之躯动停行止,却有如不为人知的秘密,令许多初涉底层的人感到神秘异常.这便是连接器与加载器的职责了.熟悉汇编语言程序设计的人应该知道,每当我们xasm后,必当link一番,源文件变成的二进制代码才肯乖乖地在特定的操作系统之上运行.而即使是link过的程序,也只是存在于磁盘或其他存储介质上的指令,如何依照操作系统的意愿将它们们搬运到内存中的指定位置并开始执行,loader功不可没.
不幸的是,现在介绍操作系统与编译原理的书籍很多,但无论哪一方面的书籍.无论哪一本书,都忽略了连接与加载这一细节问题.偶尔提到,也不过是“编译之后经过连接即可生成可执行文件”或“操作系统将可执行文件加载到内存中的指定位置开始运行”云云.令狗狗(google)发动灵鼻,爬遍“遍布世界的蜘蛛网(world wide web)”也难寻有关连接器与加载器的只言片语,只有少数文章介绍了.net加载器或java加载器,也无非是宣传其如何如何安全.如何如何快速等等,毫无实际意义可言.
然而,本书却可称得上是“唯一”一本极详细介绍连接器与加载器的文献了.本书说不上偏重理论还是实践,抑或是偏重方法,总之是一本极为实用的书.
[注]英文link一词及其衍生词(如linker.dynamic link library)通常被翻译为“链接”.“链接器”或“动态链接库”;而我在本书的翻译过程中却将它们译为“连接”.“连接器”.“动态连接库”等,这是出于这一术语的动作特征而做出的决定.“链接”通常指根据给出的标识找到特定的目标的过程,而“连接”大有“连续地放到一起”的意味.我们知道linking这个过程指的是将一个程序各个片段的代码绑定为一个逻辑上的整体,以形成可执行程序,因此,使用“连接”一词才更为恰当.
[内容]
小目录
... 下一页