一、我学习汇编的缘由
工作两年后,我为什么突然决定要学习汇编呢?在我的一些朋友看来很奇怪,确实,这个选择在我的技术学习生涯里,有点突兀。
我在上篇文章 《计算机非科班工作后如何爬出技术的绝望之谷,走向开悟之路》 中聊了下目前学习的瓶颈,决定要学习计算机科班的专业课程,打破认知差距。那么我应该如何选择重点课程,设置这些课程的学习顺序呢?
其实我最开始是学习了《数据结构算法》和《网络技术》的,这两者比较接近应用层,学习起来问题不大。然后我决定重点攻克《操作系统》,但是我发现在学习过程中涉及到许多偏硬件方面的内容,于是我决定先研究下《计算机组成原理》,但是当看到指令集体系结构这里时,发现有很多指令涉及到寄存器的操作,这些东西都像极了汇编语言,并且我回忆起了Java字节码指令好像也是类似的东西,这一刻我对汇编的好奇心被激发了。
说实话,汇编语言在我的印象中一直都具有相当的神秘色彩。还记得大学里学习C语言时,开篇就介绍了编程语言的三个层次:机器语言 - 汇编语言 - 高级语言,然后讲汇编语言非常底层,直接和计算机硬件打交道,开发效率低,学习成本高,然后我就再也没有和汇编语言打过交道了。如果我是C/C++开发者,可能对汇编并不陌生,毕竟都是代码是要编译成汇编的,确实有研究的必要。但是Java系语言有虚拟机屏蔽底层细节,且生态太过庞大,我一直没发现有学习汇编的必要。
但现在,我突然想