嵌入式系统的汇编与C语言之争
对于每个学习嵌入式系统的人而言,都会在内心存在着使用汇编和C语言的争执,特别是对于初学者更有这方面的顾虑,我应该是学汇编还是C语言呢?
对于高手而言,使用汇编还是C都是为了同一个目的-----实现系统应有的功能,所以对于他们来说,汇编和C都是异曲同工!说起来似乎很简单,但做起来就不是如此简单了。对于刚使用语言编程的人来说,可能这个说法对他们而言,有点高高在上的感觉。
汇编语言涉及到硬件的每一个细节,所以如果要想对一个嵌入式处理器有一个全面的理解,就必须要将每一条汇编语言弄懂,会用每一条汇编语言,知道这条汇编语言执行之后对处理器的影响,处理器是如何执行的,对各种标志位的影响如何。汇编在某些场合也是一个不二选择,特别在很多定时要求严格的场合也是如此,某些编译器或许也不允许直接用C语言开关中断,这时候也得使用汇编。这也是很多的编译器为什么使用“在线汇编”做法的原因。
而C语言就不必如此,C语言素有低级语言中的高级语言之说,可以操作硬件但又有很明确的意义。你可以不必了解处理器是如何具体地去操作,影响了什么标志位。理解起来很容易,对系统做成之后的维护很有优点,特别是在对他人阅读程序时有很大优势。另外可以很方便地做成模块,以后将做好的模块直接调用,比如某个外围设备的驱动程序,做好之后,以后就可以直接调用,当然汇编也可以做成一个个的子程序在以后的使用中拿来调用,但是你得关心参数传递的细节,该使用什么寄存器来传递参数 ,是否该保存上下文,这些在C语言里是不必过多的关注的,这些是编译器来处理的。这当然就涉及到编译器的问题了,一般的编译器处理是将C转换成汇编再进行处理的,也就是说,你编好的C语言是要最终转化成汇编的,这也就是说对高手而言,汇编就是C,C语言就是汇编,异曲同工!所以选择好的编译器就是一个问题了,如果你对编译器本身存在疑问,或者觉得编译器有问题,不能做最好的转换或者优化,你就可以考虑到直接写汇编了。再进一步说,推到远古时代,以前做单片机的开发和电脑程序的编写是要直接写机器语言的了,你要做得是将指令的二进制代码直接输入到机器的ROM里,让它运行的,这就是直接跟机器打交道了,这是高手级别的人玩的。这也是异曲同工最后走去的方向,那就是机器代码。
如果您是一位初学者,你又想马上上手,您或许想马上看看跑马灯,想感受一下,想得到点成就感,那就用C吧,它可以让你很快的获得学习的乐趣和成功的快乐。但是别忘了,汇编是理解这类处理器的很好的工具,你要深入地学习和了解它,建议您还是学点汇编吧。
用户377235 2014-3-9 10:15
用户377235 2013-7-14 20:34
能将你的软件给我发一份吗?我也是新手迷茫中。万分感谢!752210341@qq.com