说说汇编

前些日子看了些汇编相关书籍,感觉汇编语言掌握的虽然不是很好,但是对汇编的看法有了很大的改变。可能因为有些应用软件开发经验,以前我总是觉得汇编这个东西迟早要淘汰,最多也就那也搞硬件接口的人还会啃这些历史遗留的产物。现在我则感觉,BASIC已经淘汰了,PASCAL已经淘汰,FROTRAN已经淘汰了,Delphi已经淘汰了,Power Builder已经淘汰了,以后C、C++、JAVA、C#等都有可能淘汰,然而汇编,永远不会淘汰。
    呵呵,我这么说仅是我的个人观点,也许很多人持完全相反的态度。首先,汇编的市场份额越来越少,以前很多汇编的应用场合都逐渐被C代替。是的,这是不可否认的。然而汇编有几个杀手锏,这是其他语言所无法颦眉的。首先就是代码优化。汇编写的程序可以做到一点垃圾代码都没有,而高级语言编译器生成的文件却包含太多代码,大部分情况下越高级的语言生成的垃圾代码越多。这些垃圾代码之所以垃圾是因为它完全可以以更简单的方式实现同样的功能,而不是说他们对于程序的运行没用,如果真的没有当然高级语言的编译器也会把它卡掉。这点没什么说的,最重要的是高级指令系统的使用。硬件的发展总是远远超前于软件,自然更远远超前于高级语言编译器。很多新出来的指令系统,甚至已经出来比较长时间的指令系统都不被编译器直接支持,然而汇编却可以直接使用,这是汇编所独有的功能,其他任何语言都不具备的。
    其次就是反汇编。反汇编的用途很多,如调试,逆向工程,病毒分析,软件破解,脱壳等等。然而在没有源码,甚至连任何符号标记都没有的情况下,我们分析程序的唯一工具就是汇编。如果你对指令系统不熟悉,对系统各个模式的寻址方式,PE格式等等不是很了解(熟悉汇编语言是了解这些的基本要求),这行真是难于上青天。
    汇编在系统方面的功能越来越小。是的,不得不承认。在9X下,我们可以使用中断门、陷阱门、VxD等等方式轻松的进入Ring0,然而NT下则比较困难,虽然我们可以通过驱动带路,但是难度还是相当不一般的。汇编最终的功能可能只剩下代码优化、逆向工程和驱动程序或以下的领域了,但是在这几个领域里汇编还是相当佼佼,而且在很长的时间里都是这样。通过汇编的学习,我对C/C++的编译有了更进一步的了解,特别是各种函数调用方式的堆栈平衡问题,以前总是迷迷糊糊,现在才搞清楚。虽然我不准备在汇编里下太大功夫,但是还是很看好的,呵呵。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值