拖了很久,终于浏览了一遍,之前没读完,在于这书太多Linux的内容,而我之前只玩Windows编程,读起来不容易。
四年前刚买到时读这本书的一两章,主要学到了两点:1、“计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决。”;2、Singleton Double Check。然后再看其它Windows相关的章节,就觉得平淡无奇了,PE文件,包括重定位表在罗云彬《琢石成器》一书上介绍得更全面(虽然我现在忘干净了-,-);DLL的各种细节知识、windows函数调用堆栈、调用约定那时候我都已经了解到了,所以后来就把这书放一边。直到最近因为学习Linux才重新拿起来。
再看,发觉以前漏掉的知识点:1、memory barrier,书里只是提了一下,到网络上找详细的资料,很有内容的知识点;2、分层思想的各种案例;3、CRT的堆是一个通用的内存池。
还有新知识:Linux的ELF格式,对应Windows的PE格式;Linux共享库的GOT、PLT、装载重定位;Linux的共享库版本;glibc是Linux版本的C运行时库,C++全局对象的构造、析构由GCC实现,Linux跟Windows共有功能在运行时库上有实现,Linux个性化的功能则需要使用系统调用。
静态库、动态库的磁盘布局、内存布局,没有细看,都是一些结构体,有需要时再查查。围绕main函数展开的知识,这块算是比较完善的复习,值得读读;p356介绍为什么要使用_beginthreadex函数而不使用CreateThread创建新线程,这块核心编程也有介绍到,复习;mini CRT(++)的实现很简洁可学,不错的例子。
有两处笔误,都是Windows下的,
p288 图下方这一段的内容,说到函数返回地址、参数1、参数2,应该都是ebp+XX,而不是减XX;一般局部变量是ebp减,参数是ebp加。
p296 图10-11在“Push1”之后,栈的内容应该是3在高处1在低处;
总的来说,这本书是很好的科普,了解到一些平常用不到的背后故事。
瞄一眼底层
《程序员的自我修养》热门书评
-
平中见奇:程序员提升自己的参考方法
83有用 2无用 Stanley 2009-06-27
老实说,在2002年还在上大学的时候,我把技术类书籍分成了三六九等,从值得看到最不值得看到顺序如下:1. 在美国工作的中国人使用中文编写的书籍:因为作者的眼界相比国内更加宽广,而字里行间流淌着中国人的思维方式,没有理解文化表达方面的障碍,行文相对活泼2. 在美国工作的人使用英文编写的书籍3. 在中国...
-
给每个新手的修养之道
70有用 7无用 你们都是坏人 2009-11-28
如果你是高手,Linux Hacker或者geek,请绕行但如果你是新手如果你曾好奇过windows系统目录下和软件目录下大堆大堆的dll文件是什么如果你曾疑惑过我写下的代码经历的怎样的历程最后怎样到达了内存,编译器每天用,它到底做了什么如果你已经学习或接触了C,汇编,计算机结构,但还是没办法把三者...
-
推荐linux c/c++程序员一读
61有用 1无用 zoufeiyy 2009-05-20
关于《程序员的自我修养》这本书,最初是在和博文的周筠老师MSN上谈起,当时听周老师提及这本书是一本关于链接和装载等系统软件知识的书籍,当时就很感兴趣,因为这方面的书在国内真的见得很少,一方面这种书似乎跟做应用开发的有距离,毕竟如果只是用用C#、Java,似乎没什么必要关心编译器、链接器在做些什么,特...
-
莫等用时再读书
36有用 3无用 云风 2009-06-01
今年二月份拿到这本书的电子稿时,还不是现在这个名字。《程序员的自我修养》这个名字听起来比原来的那个名字感觉好一些,但又让人感觉有点不知所谓。还是副标题直接:《链接、装载与库》。我更愿意接受这样的一个名字,有如那本多年前读过的英文经典:《Linkers & Loaders》。那段时间很忙,一直...
-
something after read
18有用 2无用 veryzhang 2009-11-17
今天花了一天的时间从头到尾翻了一遍, 跳过了那些有X86汇编的部分, 和分析C++ CRT中解构析构的部分, 其他的都读了一遍.读完之后唯一的感觉就是: 此书非读不可, 而且要经常读.毫无疑问作者对于链接, 装载和库这三个方面是有深刻的认识的, 于深度和广度都无可挑剔, 而且组织文字的能力也属上乘,...
书名: 程序员的自我修养
作者:
出版社: 电子工业出版社
副标题: 链接、装载与库
出版年: 2009-4
页数: 459
定价: 65.00
装帧: 平装16开
ISBN: 9787121085116