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

yumo66610个月前 (05-11)技术文章117

对于编程,一直是我钟情的爱好,可能因为骨子里刻着那种刨根问底的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(一个不能影响你思考方式的编程语言是不值得了解的)。

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

相关文章

汇编入门第一篇,小白也能看懂(汇编 入门)

cxuan自己的 Github 非常硬核,求各位大佬 star: https://github.com/crisxuan/bestJavaer汇编代码是计算机的一种低级表示,它是一种低级语言,可以从字...

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

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

我们一起学RISC-V——10-C和汇编语言混合编程

本期内容如下:GCC内联汇编简述GCC内联汇编“输出操作数”和“输入操作数”部分GCC内联汇编“可能影响的寄存器或存储器”部分GCC内联汇编参考实例一GCC内联汇编参考实例二在汇编中调用C/C++函数...