欢迎来到天天文库
浏览记录
ID:50418409
大小:30.50 KB
页数:10页
时间:2020-03-09
《掌握汇编仍然是技术高手的必经之路.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、掌握汇编,仍然是技术高手的必经之路编者按:本刊今年8月号刊登了王振祥先生的《第三方程序代码安全检查技术》一文,得到了读者的好评。有读者说,从该文中看到了久违的“汇编思维”,作者的底层技术功力令人赞叹。的确,王振祥先生在一线开发岗位上奋战十多年,在实际项目开发、前沿技术研究和汇编教学方面都有非常丰富的经验。他一直坚定地认为,只有彻底地掌握汇编语言以及汇编层次的开发技术,才能真正成为技术高手。这种观点在今天听起来无疑很“另类”。本刊编辑特别采访了王先生,就一些读者关心的问题请教了他的看法。问:王老师,现在Java、.NET这样的开发平台大行其道,很多人认为现在已经进
2、入了企业级应用的时代,汇编作为系统级的开发技术不再重要,您如何看待这种说法?答:的确,如您所言,目Java、.NET非常流行,从各种培训班所开设的课程就可以看出这一点(因为培训机构往往是与“流行”结合最紧密的),在普遍使用Java、.NET进行开发的时候,直接使用汇编编程无论从开发周期还是系统的维护,的确都是不现实的。在这种情况下,不要说是学生,就是汇编语言的老师虽然也在强调汇编语言的重要性,但从内心里他们可能也并不真正觉得汇编语言有什么用处。我在大量的授课、与学生接触、与教师座谈的过程中,发现许多教师(包括汇编语言的教师)和学生对于汇编语言的认识已经局限于一个
3、必修课或者说公共课的层次,即必须学(因为必考),但是又没有什么用处(因为根本不会用其进行任何工作),某重点大学的一个学生很“形象”地将汇编语言形容为“鸡肋”,但是汇编语言是否真的是鸡肋呢,如果真的是鸡肋,那么我们为什么要浪费老师和学生的大量时间和精力在这个“鸡肋”上呢?在一次关于汇编语言重要性认知的调查座谈时,我曾经问学生,“你们是否知道,在高级程序员考试中,汇编语言是必考的,并且占有较大的分值,许多考生就失败于汇编语言试题”(根据相关网站的统计,在高级程序员考试的各种题型中,汇编语言的得分率是最低的),对于这个问题,有学生回答,他知道高级程序员考试肯定包含汇编
4、语言试题,但是他觉得将来会取消。真的会如此吗?这些情况说明了存在于计算机界的一种比较普遍的观点,就是您在问题中所说的,“汇编作为系统级的开发技术不再重要”,一些人甚至认为应该取消汇编语言这门课程(一些学校的确已经在这么做了)。就我受益于汇编语言的亲身经历而言,我不敢认同这种观点。问:那么您能否通过您的亲身经历,谈谈汇编语言的实用性?答:好的。截止到今天,我连续从事软件开发工作有15年多,而在这15年中,一直在使用汇编语言,使用汇编语言的情况大约可分为以下3个阶段:(1)1990年——1997年这个阶段使用汇编语言开发了大量的DOS下的应用程序、改写BIOS为其增
5、加基于中断方式的串口通信功能、DOS、Windows3.1,windows95、WindowsNT下的驱动程序,并且用汇编语言进行大量的对系统和其他应用程序的分析和跟踪。(2)1998年——2000年在这个阶段所做的开发工作主要集中于VB,VC,虽然没有直接使用汇编语言编写程序,但是一直在使用汇编语言进行分析,比如通过跟踪对VB5/6的修改改变其行为特征,进行病毒的分析等。(3)2001年——至今仍然用汇编语言进行一些系统的分析工作(目前正在做的反编译的研究离开汇编语言就是无源之水),与此同时用汇编语言完成了一些嵌入式系统的开发工作。根据我自身的体会,我将汇编语
6、言的作用大致进行了以下归纳,不一定完整。(1)从汇编入手,事半功倍所在的单位在开发一种教外国人学习汉语的对外汉语教学系统,我在1987年考入该单位的研究生院,1990年在写研究生论文时参与了该项目的工作,这是我第一次从事真正的软件开发工作,任务是为该对外汉语教学系统开发英汉-汉英电子词典。当时我的一个师兄和另外2个工作人员用BASIC开发该系统的主程序(也就是现在常说的课件)。当时我的指导导师说,我们单位很少有人懂得汇编,因此建议我最好用汇编语言开发电子词典程序。对于当时的我而言,汇编、BASIC、C是没有多少区别的,因为无论那种语言我都没有进行过什么实际的开发
7、工作,既然导师要求,也就只好用汇编进行开发。说实在的,刚开始的3个月里,实在是困难重重,因为高级语言提供了丰富的函数库,开发速度当然要快得多,也不要了解那么多的具体细节,但是汇编语言就不一样,事无巨细都需要自己完成,从怎么输入、怎么输出、汉字如何存储和显示等等。但是经过这么3个月的艰苦岁月之后,我发现我的水平提高很多,用BASIC进行了4年多开发的师兄在遇到一些问题时需要我的帮助,因为我在用汇编语言开发的过程中对于系统有了深入的了解。而用BASIC开发则几乎不涉及对操作系统的内部。我很庆幸,我的第一个程序就是用汇编语言开发的。我觉得在掌握汇编之后再去学习BASI
8、C、C之类的高级语言将会
此文档下载收益归作者所有