汇编的优势在哪?现在学汇编还有用吗?

汇编是低级语言,功能非常强大,写出来的软件执行效率很高,因为它直接和硬件打交道,正因为如此,所以做开发比较难,比较麻烦。先说说汇编和普通的编程什么关系,有句话是这么说的,机器(机器语言)生汇编,汇编生B(B语言),B生C(C语言),C生万物(java、Python、C++等等)。

 

那么汇编的优势是什么?这里举一个不是很恰当的例子:汇编是你的手,高级编程语言,比如java,Python。是洗衣机。开发一个软件或者游戏就是洗一大堆衣服。用手洗衣服,要麻烦的多,但是洗的更干净(这里仅仅是举例,不要抬杠,意思是好好洗的时候确实手洗更干净些),用洗衣机洗就快的多了,但是没有手洗的干净。当你开发一个软件的时候,工程量是很大的,也就是洗一大堆衣服的时候,你是选择用洗衣机还是用手洗呢?

所以引出结论,普通的公司,大部分的项目,只需要用高级语言就行,普通的软件都是这么做出来的,用例子来说也就是用洗衣机洗洗就好了,各大宾馆就是这么干的。如果是很牛逼的公司,是高级语言和汇编结合着用,就是执行效率很低的部分,用汇编来写,提高程序的效率,比如QQ的主体部分是用高级语言编写的,但是某些部分就用到了汇编,用于提高它的执行效率。用例子来说就是某些非常高档的宾馆,他们的铺盖都是先用洗衣机洗完,有些部分不是很干净,再用手洗一次。还有就是和硬件打交道的地方,开发驱动程序的时候,比如显卡驱动网卡驱动,这里很大一部分需要用到汇编,举例子就是某些非常高档的衣服,必须手洗。到这里详细大家都明白这个汇编的用处了。

咱们在第一段说了这些语言的先后顺序,同时也是他们的执行效率排名,由前到后,执行效率依次递减。机器语言就是你亲自干活,汇编就是你亲自指挥几个人干活,C就是你指挥中层,中层再指挥底层干活的人干活,以此类比,越高级的语言执行效率越低,但是你需要做的事情也是越来越少。

对于某些大公司来说,汇编是有需求的,对于小公司来说,没必要。至于学习,有时间的话肯定多学点好,当别人都不会你会的时候,你就是无可取代的,当你做到了无可取代,你就有了谈条件的资本,或者同样的一个软件,你通过汇编优化了一下,执行效率提高了,那用户体验肯定也就提高了,这个也是优势啊。

反汇编(破解软件)也是需要你懂汇编的,逆向工程在我看来很复杂,就是因为我不怎么会汇编。大公司需要反汇编的人才,据称,华为就是通过反编译思科的源程序做出来的路由交换的系统,当然也有说是从黑客手里购买的思科的源代码(这里不作讨论)。

不过话说回来,汇编太难了,确实太难学了,计算机专业的学生应该都知道,微机原理这课程包含汇编的一点非常基础的知识,并且实现的功能都非常的简单,这个基础的知识就够一些人头疼的了。何况深入研究。如果有精力有时间,可以学,学好了是大神,学不好也不吃亏。