计算机学习过程中总会有各种疑问,但个人觉得,如果疑问越多,学到的东西会越多。但前提是愿意去想办法解答自己的疑问,这样就会完善自己的知识体系。遇到问题解决效率就会提升不少。
汇编语言,以我90后的角度来说,工作几年来基本没有接触到过,对它的认知完全停留在自学的基础之上。只是看新闻得知以前雷军这位大佬有编写过,说他写出来的代码像诗一样优雅。完整的代码有两千多行,我就不贴出来了,感兴趣的朋友可以自行查阅下,反正距离现在怎么也得快三十年了。这期间科技发展迅速,程序语言也发生了很多变化,到现在除非特殊行业,我了解的比如嵌入式系统都已经基本用c编写,汇编也只是成为其中的附件。所以一般普通程序员用汇编的可能不多。但是对其感兴趣的可能有不少人,包括我,所以将学习所得分享给大家。
汇编语言就是可以直接控制处理器和其他硬件,但是代价就是更高的软件开发费用还有缺乏移植性,况且现在想找到一个经验丰富的汇编语言程序员也是比较困难,所以汇编语言现在就慢慢编程高级语言的附件,用也是用在那些要求极高的效率或者程序非常紧凑,其他方式无法编写的小段代码里。比如我了解到linux内核代码中,有关字符串操作的函数都是通过嵌入式汇编完成的,因为内核以及用户程序对于字符串函数的调用非常频繁,因此汇编代码就是为了提高效率,这过程就是以牺牲可读性和可维护性为代价的。但是如果我们想研究和阅读一些底层代码的话,掌握汇编指令正是突破此事的根本。
对于基础的汇编知识,我也会边学习边分享给大家。后续如果学习阅读linux源码的话,可能会碰到一些汇编语言的片段,有些是出现在扩展名为.s的汇编文件中,有些出现在.c为扩展名的C文件中。这种出现在C代码中的汇编叫嵌入式汇编。Linux源码中出现的汇编是AT&T的386汇编语言,因为linux也是unxi家族的一员。起源于unix,unxi处理器期初采用的就是AT&T的指令格式。在下一篇的文章里,会使用汇编程序gas和连接程序ld,编写一个输出hello world的程序,感兴趣的可以看看。
最后我在学习的时候,不知道那时候下载的一款汇编指令查询的古老软件,作者叫黑夜彩虹,2006年开发的,距今已经17年了,向这位前辈致敬,这款软件应该在那时候帮助了不少爱好者学习汇编吧。
用起来有种穿越感,好像小时候查单词的电子词典,对比现在的满屏广告的软件好用多了。
好了,今天就到这,感兴趣的同学可以后台回复汇编,获取相关的学习资料,别忘了点赞关注呀。
END