序
我还记得我最初碰到邓志,是因为我碰到需求不得不要写一个比较简单的x86指令的编码器。其实我并不是要写一个汇编器那么强大的工具,只是需要动态地生成一部分x86的指令来完成一些功能。我在网上找了很多代码,包括下载了nasm的源码,改了一段时间,因为牵涉太广实在是无法精简。没办法就只好自己学习x86的指令编码规则。于是在志志的主页上看到了他对x86指令编码规则的简单通俗的介绍。学了一下受益颇多,比看Intel提供的指令手册要简单多了,而且照样好用。不过,可惜的是,现在我又忘得精光了。当然,如果我要再用,我会去找他的。现在可简单多了,我会要他送一本他的新书给我。我想这本书应该很快就会和读者们见面了,因为我已经在帮他写序了。
从他网站上的文章来看,他是个基础非常扎实的技术人。这点和我就不一样了。我多年来一直疲于奔命地开发各种各样的项目,做了无数种稀奇古怪的东西,但基本上都是做完即忘。下次碰到一样的问题,唯一的记忆是知道应该去哪里找线索。所以我在写《天书夜读》和《寒江独钓》的时候,也只能一边写代码一边写书。如果是代码上没有用到的地方,也就避而不谈了。避不开的,我只能说,这个问题笔者没有研究过,请读者自己研究云云。当然这也招来了不少读者的不满。不过我总觉得,我作为一个工程师,只能写出工程上遇到过和处理过的问题。否则就只能瞎编或者照搬了。但是志志的风格和我完全不一样。我感觉他总是要亲手编码研究每个细节问题,而不在乎这个问题在实际项目中是否真会遇到。否则我无法理解他的作品为何会那么详尽。
我曾经把《天书夜读》第二版(这个版本至今还没有出版)的一些章节发给他,让他帮我给点意见。结果他自己“过滤”了每个字和每个标点符号,针对每个遣词用句、技术细节给了无数的反馈意见,而且任何一个小问题都引经据典地同我辩驳,我往往无言以对。从此我只能叫他邓学究。
我很高兴为邓学究的书写序。他的书是学院派的,并非工程派的。学院派的好处是体系完整,事无巨细,尽情囊括。读者尽可以从中学到全貌的知识,而不像每天只知道干活的工程师写出的经验总结——那些经验或许很有价值,能够协助你快速入门,甚至完成一个项目的任务,但是夯实自己的技术基础,那依然是自己不得不要去完成的任务。
我甚至觉得他这本书非常适合作为教材。一般的学院派的书理论居多,指导实践的少。我在大学的时候就常常是觉得学过了大部头的教材,还是完全不知道学到的东西如何使用。往往是几个简单的实验做完就了事了。到了工作中早就忘记得一干二净。幸运的是邓志的这本书完全不是如此。几乎书中讲到的每一步,他都介绍了在计算机上实际操作的方法。而所用的软件工具,无一不详尽提供其细节,真正达到了从零基础开始动手,也不会存在任何障碍的程度。当然,学习这样一本书,是需要极大努力和耐心的。如果我是教师,我甚至可能都不敢选择这本书作为教材。因为我要花很多时间,才能去把上面的示例代码一一跑通。而且还要时刻担心在课堂上演示出问题,而又解决不了时满头大汗的尴尬呢。但要是学习的话,就一定会选择这本书。很显然,在实践中解决困难,应用所学知识的乐趣,是任何高大全的课程所无法比拟的。如果耐心地将这本书上的内容读过,将邓学究提供的例子一一运行过,我相信自己对关于x86处理器的知识,必定会了然于胸了。
当然,有些读者会觉得奇怪,为什么要学习这本书呢?这本书有什么价值呢?我觉得可以拿大学的一门课程来解释这本书的价值,那就是“80x86微机原理与接口技术”。在我读大学的时候,这门课程的内容就已经严重地过时了。此后工作许多年,我也没有碰到过这门课程中有令我满意的资料。有一些翻译的书还算不错,比如我后来用过的《Intel微处理器》,但是邓志的这本书真正是让我眼前一亮。目前为止,这是我见过的对x86处理器介绍得最详尽又最具实践指导意义的书。
谭文于2012年秋