《程序员的自我修养》读书笔记 第十周

                                              《程序员的自我修养》读书笔记

     程序设计的模块化一直是程序员在工作过程中所追求的目标,因为当一个程序包含多种功能时,一整段程序会使整个程序变得十分难懂而且无法维护,这时就需要我们把要实现的功能模块化,将复杂的系统逐步分割成小的系统以达到逐个击破的目的。在一个软件的编写过程中也是一样,每名开发人员各自负责编写一部分模块化的功能,最后再拼装在一起,这样会大大提高效率并且可以降低错误率,所以人们把每个源代码模块独立地编辑,然后组装起来,这个过程就是链接,把各个模块相互引用的部分处理好,使得各个部分都互不干扰又可以相互联系。链接过程包括了地址和空间分配,符号决议,重定位等步骤。在链接过程中每个模块的源代码文件经过编译器变异成目标文件,以.o为扩展名,目的文件和库文件一起链接成最终的可执行文件,最常用的库runtime library,它是支持程序运行的基本函数集合。在链接过程中,对其他定义的目的文件中函数调用的指令需要被重新调整,对使用其他定义在其他文件的变量来说也有同样的问题,所以链接过程就给这些变量名进行调整和区分,等待连接器在将目标文件AB链接起来的时候再次进行修正。这个地址修正的过程通常被称为重定位,每一个要被修正的地方叫做重定位入口,重定位所做的就是给程序中每一个需要这个过程的绝对地址引用的位置做标记,使得它可以指向正确的地址,这样才可以保证程序的正确运行而不产生混淆和错乱。

posted @ 2018-05-17 21:02  ffy0701  阅读(139)  评论(0编辑  收藏  举报