读《程序员的自我修养-链接装载与库》

读《程序员的自我修养-链接装载与库》

ID:42933453

大小:39.00 KB

页数:6页

时间:2019-09-23

读《程序员的自我修养-链接装载与库》_第1页
读《程序员的自我修养-链接装载与库》_第2页
读《程序员的自我修养-链接装载与库》_第3页
读《程序员的自我修养-链接装载与库》_第4页
读《程序员的自我修养-链接装载与库》_第5页
资源描述:

《读《程序员的自我修养-链接装载与库》》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、读《程序员的自我修养•链接装载与库》本书内容宛如其副标题链接、装载与库。比较清晰的介绍了程序从编译到链接到最后由操作系统加载并结合运行时库执行起來的过程,对程序的产生和运行流程剖析的可算是入木三分。计算机组成原理讲的是硕件如何转起來的,而本1$则讲的是软件如何转起來的。不喜欢主标题扣上“程序员的自我修养"这顶大帽子,貌似不懂木书所讲的就不是程序员了?或者说至多算个没修养的程序员?书中对某些细节过于追究,当然也反映出了作者可能对这些细节比较熟悉,但并非所有的读者都对这些细节感兴趣。或者说有点冃标读者群体定位不精准,知识层而划分不明确的嫌疑。不推荐群体:新人;非C/C++程序员;应用层程序

2、员推荐群体:C/C++偏底层程序员;有2年以上的C/C++经验并且对底层想澄清下的应用层程序员总体感受:还行,毕竞是国人白己写的书,能到这程度已经很欣慰,学术味淡点会更好感谢宋传波大侠赐宝一阅!正文之前很简单的道理,本以为口己明白的很,但耍写出来让人明白,却是件非常不容易的事你可以不自己造轮子,但应该了解轮子的构造,而且越详尽越好,中恶就是程序的口我修养吧第1部分简介第1章温故而知新计算机科学领域的任何问题都町以通过增加一个间接的中间层來解决在尽可能少甚至不改变其他层的情况下,新增加一个层次就可以提供前所未冇的功能相对于多进程应用,多线程在数据共享方而的效率要高得多10密集型线程总是比

3、CPU密集型线程更容易得到优先级的提升Linux对多线程的支持颇为贫乏,在Linux内核中并不存在真正意义上的线程概念fork产生新任务的速度非常快,它并不复制原任务的内存空间,而是和原任务一起共享一个丐时拷贝(CopyonWrite,COW)的内存空间函数可重入的特点:不使用任何(局部)静态或全局的非const变量不返回任何(局部)静态或全局的非const变量的指针仅依赖于调用方提供的参数不依赖任何单个资源的锁不调用任何不可重入的函数volatile关键字的作用:阻止编译器为了捉高速度将一个变量缓存到寄存器内而不写回组织编译器调整操作volatile变量的指令顺序(但无法阻止CPU在

4、执行时对指令的动态调度换序)barrier指令可以阻止CPU对该指令前后的指令进行乱序执行用户态线程并不一定在操作系统内核里对应同等数量的内核线程。存在“一对一”、“一对多”或“多对多”模型第2部分静态链接第2章编译和链接预编译主要处理规则将所有的#include删除,并且展开所有的宏定义处理所有的条件编译指令,比如#if、#elif、#else>#endif处理#include预编译指令,将被包含的文件插入到预编译指令的位置。此过程递归执行删除所有的注释添加行号和文件名标识,以便于编译时产生调试用的行号信息及用于编译时产生编译错误或警告时能够显示行号保留所有的#pragma指令,因为

5、编译器要使用它们在接在语法树上作优化比较困难,所有源代码优化器往往将整个语法树转换成中间代码。小间代码的存在也使得编译器被拆分为前端和后端运行时库是支持程序运行的基木函数的集合笫3章目标文件里有什么obj目标文件从结构上讲,它已经是可执行文件格式,只是还没有经过链接的过程,其中可能有些符号或有些地址还没有被调整。其实它本身就是按照可执行文件格式存储的,只是跟真正的可执行文件在结构上稍有不同现在PC平台上流行的可执行文件格式主要是Windows下的PE(PortableExecutable)^Linux上的ELF(ExecutableLinkableFormat),它们都是COFF(Co

6、mmonfileformat)格式的变种很多问题在表面上看似简单,其实深入内部会发现很多鳞为人知的秘密,或者发现以前自己认为理所当然的东西居然是错误的,或者是有偏差的真正了不起的程序员对B己程序的每一个字节都了如指掌由于不同的编译器采用不同的名字修饰方法,必然会导致由不同编译器编译产生的目标文件无法正常相互链接,这是导致不同编译器之间不能互操作的主要原因之一编译器默认函数和初始化了的全局变量为强符号,未初始化的全局变量为弱符号链接器对强符号和弱符号的处理规则不允许强符号被多次定义如果一个符号在某个H标文件中为强符号,在其他文件中都是弱符号,那么选择强符号如果一个符号在所有目标文件中都是

7、弱符号,那么选择其中占用空间最大的一个调试信息在目标文件和可执行文件中占用很大的空间,往往比程序的代码和数据本身大好儿倍第5章WindowsPE/COFFPE文件在装载时被直接映射到进程的虚拟空间中运行,是进程虚拟空间的映像。PE可执行文件很多时候也被叫做“映像文件”PE/COFF格式与ELF文件格式非常相似,都是基于段结构的二进制文件WindowsF最常见的目标文件格式为COFF格式,COFF屮有个".drectve段”,该段中保存的是编译器

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。