为什么要学习汇编语言?
一篇解释学习汇编语言的好处的文章
引言
修订版 2
“汇编语言?那不就是关于如何组装你全新的电脑桌的那些难以阅读的指令吗?”...
不。
什么是汇编语言?
x86 汇编是针对 x86 系列处理器(特别是 32 位 x86 处理器 IA-32 - http://en.wikipedia.org/wiki/IA-32)的编程语言。 IA-32 架构定义的指令集是针对地球上绝大多数个人电脑中安装的微处理器系列的。汇编语言是特定于机器的,被认为是“低级”语言。这意味着代码和语法更接近计算机的处理器、内存和 I/O 系统。高级语言的设计具有关键字、库和语法,它们在语言和硬件之间引入了高度的抽象。
背景
我以为汇编是一种过时的语言,为什么要浪费时间呢?
虽然这确实是真的,你可能不会发现自己用汇编编写你下一个客户的应用程序,但从学习汇编中仍然可以获得很多好处。如今,汇编语言主要用于直接硬件操作、访问专门的处理器指令或解决关键的性能问题。典型的用途是设备驱动程序、低级嵌入式系统和实时系统(编辑:感谢 Trollslayer)。事实是,高级语言变得越复杂,编写的 ADT(抽象数据类型)越多,支持这些选项所产生的开销就越大。在 .NET 的实例中,可能是臃肿的 MSIL。想象一下如果你了解 MSIL。这就是汇编语言发光的地方。(编辑)汇编语言是程序员可以获得的,与处理器最接近的语言,因此一个精心设计的算法是飞快的——汇编对于速度优化非常棒。这一切都与性能和效率有关。汇编语言可以让你完全控制系统的资源。就像一个装配线一样,你编写代码将单个值推入寄存器,直接处理内存地址以检索值或指针。用汇编编写意味着确切地了解处理器和内存如何协同工作以“实现事情”。请注意,汇编语言是隐晦的,并且应用程序的源代码大小比高级语言大得多。但请不要误会,如果你愿意投入时间和精力来掌握汇编,你会变得更好,并且你会成为该领域的佼佼者。
那么你为什么要关心呢?
关注点
维尔特定律
我还记得用我全新的 2400bps 调制解调器拨入我的 486 BBS。快进 14 年,现在我们仅受限于我们的想象力。有了所有这些惊人的技术突破,却存在着一个明显的反常现象;一个悖论。这被称为维尔特定律。维尔特定律指出,软件变慢的速度比硬件变快的速度更快。这种情况发生的原因不止一个,但我想,作为开发人员,我们离软件开发的低级细节越远,我们编写的代码就越差(效率低下)。等一下!我没有说任何人愚蠢。只是这些新的语言和超强的处理器将我们从机器上抽象出来,我们不再需要关注垃圾回收、变量初始化、内存地址指针等问题。所有这些功能以及更多功能现在都是当今语言/运行时/IDE 中的标准配置。结果是一批新的开发人员,他们依靠卓越的硬件性能而不是努力编写简洁、内聚、高效的代码。
我的眼睛睁开了!
我现在意识到,学习汇编语言将教会我计算机的内部运作方式。我将学习 CPU/CPU 寄存器如何与内存地址协同工作,一次一条指令地实现最终结果。这并不意味着我将开始用汇编编写所有内容,但是,我将学习使用哪些数据类型以及何时使用。我将学习如何编写更小、更快、更高效的例程。我将以大多数同行无法达到的水平理解软件开发。我甚至开始考虑编写自己的编译器。
因此,如果你真的想在你的领域中领先于竞争对手,我建议你尝试学习汇编语言。
关于学习汇编的资源
- 如何使用 Debug - https://codeproject.org.cn/KB/miscctrl/Debug.aspx
x86 汇编语言简介
历史
我计划用链接更新此博客,链接到教程/文章/书籍/示例源代码。
嗯,一如既往,
感谢阅读。
Buddy B.