Jiao Meng

Focus on .NET component development

博客园 首页 新随笔 联系 订阅 管理

大学时很多基础课学得不扎实,工作之后才感到“书到用时方恨少”。趁着年轻,趁着还有兴趣,赶快挑几门课恶补一阵。这挑的第一门便是汇编。为什么是汇编?我给自己找了三个理由:一是汇编是很多课程的基础,比如编译原理,组成结构等;二是汇编还算比较有意思的课程,它能带来高级语言无法体会到的底层感;三是实用价值,调试程序,阅读源码有时会用到汇编。

我选的第一本教材绝对是一门傻瓜书,很入门级的教材:王爽的《汇编语言》,清华大学出版社的。这本书最大的优点就是“傻瓜”,小段小段讲述,每一小段都只讲很特定的知识,有点像软件开发中的增量开发。相信计算机系毕业的学生读这本书绝对可以用一马平川来形容。如果对汇编有畏惧心理,这本书就是最大的定心丸(不要问我对汇编有没有畏惧心理)。该书最大的缺点,以我的观点,是只讲述了16位汇编。当然,考虑到这本书的教学目的,这样的安排是可以理解的,但它的确不能满足我32位的好奇心。

我是一个急功近利的人,大概工作了的人都有这毛病。王爽的书还没有读完,我就在网上找来了第二本汇编书:Paul A. Carter的PC Assembly Language。这本书今年十月被放到网上就被我down了下来。感谢互联网,感谢Carter老师的奉献,他给自己学生用的教材就这样被地球另一边的我不劳而获了。我没有听说这本书有中译版,但这本书绝对可以用精彩来形容。语言很简洁,没有一句废话,你认真读过的每一段话都绝对有收获。读了这本书我也感叹我们的计算机教育和国外的差距。如果你的E文还可以,我强烈建议你读这本书。

除了以上两本,我还有一本书正在读,就是那本著名的Computer System: A Programmer's Perspective。这本书有中译版,叫《深入理解计算机系统》。这本书不是单纯讲汇编语言,但汇编语言在该书中占了相当的篇幅,毕竟汇编更接近计算机的语言。这本书是一本砖头书,读完需要一定的毅力,因为不是每个章节都是你所感兴趣的。比如第二章中讲信息存储时integer、float point的各种存储形式,我的兴趣就不是很大。我认为这些存储的基本知识掌握就可以了,过多的细节一下看完也记不住。而且第二章用了一打一打的数学公式来解释逻辑,让我这个从小念不准sin、cos的中国学生无所适从。

最后有一点很郁闷,就是以上三本书所用的汇编语言都有差别。王爽用的是masm,Carter用的是nasm,而CS:APP用的是GAS(Gnu ASsembly)。虽说都是汇编话,但方言太多也难免混淆。

posted on 2004-12-24 16:40  Jiao Meng  阅读(1036)  评论(1编辑  收藏  举报