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

yumo6661个月前 (05-11)技术文章10

对于编程,一直是我钟情的爱好,可能因为骨子里刻着那种刨根问底的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汇编代码是计算机的一种低级表示,它是一种低级语言,可以从字...

单片机入门-要从汇编开始(单片机汇编基础知识)

简介单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器、显示驱动电路、脉宽调制电路、模...

万字详文:Golang 汇编入门知识总结,看这一篇就够了

作者:ivansli,腾讯 IEG 运营开发工程师在深入学习 Golang 的 runtime 和标准库实现的时候发现,如果对 Golang 汇编没有一定了解的话,很难深入了解其底层实现机制。在这里整...

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

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

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

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

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

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