文档介绍:掌握汇编,仍然是技术高手的必经之路
编者按:本刊今年8 月号刊登了王振祥先生的《第三方程序代码安全检查技术》一文,得到了读者的好评。有读者说,从该文中看到了久违的“汇编思维”,作者的底层技术功力令人赞叹。的确,王振祥先生在一线开发岗位上奋战十多年,在实际项目开发、前沿技术研究和汇编教学方面都有非常丰富的经验。他一直坚定地认为,只有彻底地掌握汇编语言以及汇编层次的开发技术,才能真正成为技术高手。这种观点在今天听起来无疑很“另类”。本刊编辑特别采访了王先生,就一些读者关心的问题请教了他的看法。
问:王老师,现在Java、.NET 这样的开发平台大行其道,很多人认为现在已经进入了企业级应用的时代,汇编作为系统级的开发技术不再重要,您如何看待这种说法?
答:的确,如您所言,目Java、.NET 非常流行,从各种培训班所开设的课程就可以看出这一点(因为培训机构往往是与“流行”结合最紧密的),在普遍使用Java、.NET进行开发的时候,直接使用汇编编程无论从开发周期还是系统的维护,的确都是不现实的。在这种情况下,不要说是学生,就是汇编语言的老师虽然也在强调汇编语言的重要性,但从内心里他们可能也并不真正觉得汇编语言有什么用处。
我在大量的授课、与学生接触、与教师座谈的过程中,发现许多教师(包括汇编语言的教师)和学生对于汇编语言的认识已经局限于一个必修课或者说公共课的层次,即必须学(因为必考),但是又没有什么用处(因为根本不会用其进行任何工作),某重点大学的一个学生很“形象”地将汇编语言形容为“鸡肋”,但是汇编语言是否真的是鸡肋呢,如果真的是鸡肋,那么我们为什么要浪费老师和学生的大量时间和精力在这个“鸡肋”上呢?
在一次关于汇编语言重要性认知的调查座谈时,我曾经问学生,“你们是否知道,在高级程序员考试中,汇编语言是必考的,并且占有较大的分值,许多考生就失败于汇编语言试题”(根据相关网站的统计,在高级程序员考试的各种题型中,汇编语言的得分率是最低的),对于这个问题,有学生回答,他知道高级程序员考试肯定包含汇编语言试题,但是他觉得将来会取消。真的会如此吗?
这些情况说明了存在于计算机界的一种比较普遍的观点,就是您在问题中所说的,“汇编作为系统级的开发技术不再重要”,一些人甚至认为应该取消汇编语言这门课程(一些学校
的确已经在这么做了)。就我受益于汇编语言的亲身经历而言,我不敢认同这种观点。
问:那么您能否通过您的亲身经历,谈谈汇编语言的实用性?
答:好的。截止到今天,我连续从事软件开发工作有15年多,而在这15年中,一直在使用汇编语言,使用汇编语言的情况大约可分为以下3 个阶段:
(1)1990 年—— 1997 年
这个阶段使用汇编语言开发了大量的DOS 下的应用程序、改写BIOS 为其增加基于中断方式的串口通信功能、DOS、,windows 95、Windows NT 下的驱动程序,并且用汇编语言进行大量的对系统和其他应用程序的分析和跟踪。
(2)1998 年—— 2000 年
在这个阶段所做的开发工作主要集中于VB,VC,虽然没有直接使用汇编语言编写程序,但是一直在使用汇编语言进行分析,比如通过跟踪对VB5/6 的修改改变其行为特征,进行病毒的分析等。
(3)2001 年——至今
仍然用汇编语言进行一些