在我将近10年的嵌入式编程的实践过程中,真正使用汇编的地方并不多。尤其是ARM这样使用地址空间操作寄存器的方式,大部分代码都可以用C完成,汇编的技能主要用于:
1、阅读bootloader代码:基本上,除了OS的核心部分有汇编代码以外,boot loader 的一部分一般是由汇编代码完成,能读懂这些代码对体系架构的理解和设备启动的流程都很有帮助。
2、分析问题:现在编译器优化的很厉害,生成的代码和C代码有时很难又严格的对应,所以在单步跟踪某些问题的时候,需要能够看懂一些汇编语句来分析程序真正执行的流程。
3、性能:大部分时候编译器的优化已经够好,我们手写的汇编的效率未必比他高,但是有些特定的场景,我们可以通过汇编调用CPU的专用硬件指令来进行优化。
我对我自己对汇编的要求就是能看懂和分析,不要求能够编写复杂的汇编程序。而且汇编大部分是相同的,掌握一种,另一种可以猜个十之八九。