学习汇编的意义在哪里?(汇编要学到什么程度)

yumo6663个月前 (05-11)技术文章23

对于编程,一直是我钟情的爱好,可能因为骨子里刻着那种刨根问底的DNA吧。都说懒惰是人类进步的动力,我看也不尽然,因为学习一项新知识必要付出加倍的努力。

一开始只是为了摆脱枯燥重复的录入,自学了Python,设计出了人生第一款小软件,极大改善了工作效率。然而内心里不喜欢python隐藏一切细节的特点,想知道更多,于是就自学了C。面向过程,虽然复杂,却满足了我的未知欲。

但人类啊,终归是不懂得满足的生物,于是就继续自学了算法,享受那种大脑卡壳,数日苦思后或豁然见日,或萎靡不振的极限拉扯。

别人是越学越高级,我却是越学越回去,在自学了算法后,渐渐又接近了汇编语言。

对于我而言,那种短小精练的语句却有着别样的金属质感。有种手握硬件,画着路线图,将数据一一搬运的画面,不多久,就迷上了这个特别的语言。然而随着学习的深入,一个问题逐渐浮现到了脑海中,在当下百花齐放的编程语言中,汇编语言仍然值得花时间去学习甚至精通吗?

这里,有一个小小的例子。老人家平时用的一台老电脑安装了某个安全软件(老爷机还是装个安心),但这个软件居然和一些表格插件产生了兼容性问题,每次都作为病毒扫描出来,已经设定了排除规则但病毒库更新后还是报错,弄得老人家以为电脑出了什么问题。想换个安全软件,老人家说习惯了老界面,不想更改。头大。

当时上网查了一堆修改进程名称的方法,都不顶用。通过各种高级语言修改进程名都无效,因为必须先运行得起来才能修改,可这第一步就实现不了。DLL注入不稳定,被监测病毒。

随着学习汇编的深入,我对程序的构造及运行底层原理加深了认识。偶然灵光一现,心想,能否通过反汇编的方式进行修改。说干就干,开始X96DBG,IDA学起。。。几天后,那烦人的病毒提示再也不见了。

真是一件很典型的例子,汇编可以让你接近于底层视角审视程序的运行规则,从而在必要时为程序优化提供方案。用一句我很赞同的话作为总结,出自于首届图灵奖得主艾伦·佩利 ( Alan J.Perlis ):A language that doesn't affect the way you think about programming, is not worth knowing(一个不能影响你思考方式的编程语言是不值得了解的)。

所以汇编语言,值得学习吗?

相关文章

原来汇编中的循环是这么玩儿的(汇编怎么实现循环)

汇编系列其实也在一直更新,只不过更新的频率会挺慢的。。。由于白天一直忙于工作,空闲时间还要看书、学习各种技术栈,早上也要抽时间早期健身,晚上回家还要陪家人 + 学习,时间安排的满满当当,所以我就慢慢写...

芯片的这些常见分类了解一下(一)(芯片种类分类)

芯片的使用地方非常的多,所以在芯片的分裂上种类也有很多,这些应该也是大家都知道的,但是芯片有哪些分类你搞得清楚吗?1、内存储器按存储信息的功能可分为随机存储器RAM(RandomAccess Memo...

大神真闲传,又一款纯汇编撸成的操作系统:MenuetOS

这个世界从来都不缺大神,然而大神们除了拥有惊人发量这点过人之处外,可能更加鲜为人知的却是三个字:闲得蛋疼!没错,能称得上大神的多多少少有点吃饱了撑的,不过这只是我们外人看来的,作为大神他们从来不屑于我...

系统设计硬核知识(1)——操作系统的类型和结构

一、一个观点、两条线索。一个观点:以资源管理的观点来定义操作系统;从资源管理的角度看,操作系统主要是对处理器、存储器、文件、设备和作业进行管理。两条线索:如何管理计算机各类资源、控制程序的执行。现在讲...