相比于高级语言的层层抽象汇编语言更接近于机器运行的本质
导读:
这是一本非常不错的汇编入门的书籍,对于学习编程的同学永远绕不开的一个问题就是程序是怎么运行的,而学习汇编会帮助你更好的去理解程序的运行,从而在面对高级语言时,能够打下一个比较不错的基础;如果你近期有打算阅读这本书的话,建议先去读《编码:隐藏在计算机软硬件背后的语言》这本书。关于我读这本书的原因是在看CSAPP时发现很多汇编指令都不明白是什么意思,为此便特意去读了一遍这本书,发现还是蛮有收获的。
在这篇文章中不是为了告诉大家这本书在讲什么,而是希望能够对汇编这个概念有一个更深的理解,可以更好的去读这本书,为此让我们带着三个问题出发。
汇编语言是什么?
关于汇编语言书中是这样描述的:汇编指令和机器指令的差别在于指令的表示方法上,汇编指令是机器指令便于记忆的书写格式。
通过这句话可以了解到 汇编语言其实就是一组助记符,帮助我们去更好的阅读与书写程序。
维基百科中是这样描述的:汇编语言是一种用于电子计算机、微处理器、微控制器,或其他可编程器件的低级语言。在不同的设备中,汇编语言对应着不同的机器语言指令集。一种汇编语言专用于某种计算机系统结构,而不像许多高级语言,可以在不同系统平台之间移植。
从这句话可以看出汇编语言是根据不同的处理器具有一定的差异性,也就是说在A机器下写的程序,放在B机器下未必可以直接运行。
汇编语言可以做什么?
相比与高级语言的层层抽象汇编语言是最接近机器语言的编程语言,也就意味着汇编语言对硬件有很强的操纵能力,主要用于嵌入式开发。
了解汇编语言对我有什么好处?
在知乎看到一个很不错的答案 直接进行引用:
学汇编不是说一定要用这玩艺做多牛鼻的事情, 问题的关键在于, 学透了汇编会使你真正理解计算机
另外一方面, 如上面所说, 在工作中你迟早会在某个阴暗的角落遇到汇编. 不管你承认不承认, 现在的CPU没有直接跑高级语言的, 哪怕是虚拟机也都是类似汇编的指令集.
当遇到崩溃分析, 性能优化甚至编译器抽风等等的时候, 汇编是你最后一根救命稻草.
结语:
关于学习汇编的意义不在于非要用它去写程序,而是在写程序的时候可以知道那种写法会更好些,但凡对程序设计有所追求的话,汇编都是必修技能或基础;你能取得的高度,源自于你的基础。
提供一些学习资料:
小甲鱼的博客 里面提供有视频
还有就是本书