原创 嵌入式系统的汇编与C语言之争

2008-6-25 01:11 3272 11 12 分类: MCU/ 嵌入式

嵌入式系统的汇编与C语言之争


对于每个学习嵌入式系统的人而言,都会在内心存在着使用汇编和C语言的争执,特别是对于初学者更有这方面的顾虑,我应该是学汇编还是C语言呢?


对于高手而言,使用汇编还是C都是为了同一个目的-----实现系统应有的功能,所以对于他们来说,汇编和C都是异曲同工!说起来似乎很简单,但做起来就不是如此简单了。对于刚使用语言编程的人来说,可能这个说法对他们而言,有点高高在上的感觉。


汇编语言涉及到硬件的每一个细节,所以如果要想对一个嵌入式处理器有一个全面的理解,就必须要将每一条汇编语言弄懂,会用每一条汇编语言,知道这条汇编语言执行之后对处理器的影响,处理器是如何执行的,对各种标志位的影响如何。汇编在某些场合也是一个不二选择,特别在很多定时要求严格的场合也是如此,某些编译器或许也不允许直接用C语言开关中断,这时候也得使用汇编。这也是很多的编译器为什么使用“在线汇编”做法的原因。


而C语言就不必如此,C语言素有低级语言中的高级语言之说,可以操作硬件但又有很明确的意义。你可以不必了解处理器是如何具体地去操作,影响了什么标志位。理解起来很容易,对系统做成之后的维护很有优点,特别是在对他人阅读程序时有很大优势。另外可以很方便地做成模块,以后将做好的模块直接调用,比如某个外围设备的驱动程序,做好之后,以后就可以直接调用,当然汇编也可以做成一个个的子程序在以后的使用中拿来调用,但是你得关心参数传递的细节,该使用什么寄存器来传递参数 ,是否该保存上下文,这些在C语言里是不必过多的关注的,这些是编译器来处理的。这当然就涉及到编译器的问题了,一般的编译器处理是将C转换成汇编再进行处理的,也就是说,你编好的C语言是要最终转化成汇编的,这也就是说对高手而言,汇编就是C,C语言就是汇编,异曲同工!所以选择好的编译器就是一个问题了,如果你对编译器本身存在疑问,或者觉得编译器有问题,不能做最好的转换或者优化,你就可以考虑到直接写汇编了。再进一步说,推到远古时代,以前做单片机的开发和电脑程序的编写是要直接写机器语言的了,你要做得是将指令的二进制代码直接输入到机器的ROM里,让它运行的,这就是直接跟机器打交道了,这是高手级别的人玩的。这也是异曲同工最后走去的方向,那就是机器代码。


如果您是一位初学者,你又想马上上手,您或许想马上看看跑马灯,想感受一下,想得到点成就感,那就用C吧,它可以让你很快的获得学习的乐趣和成功的快乐。但是别忘了,汇编是理解这类处理器的很好的工具,你要深入地学习和了解它,建议您还是学点汇编吧。

文章评论1条评论)

登录后参与讨论

用户377235 2014-3-9 10:15

有用!谢谢

用户377235 2013-7-14 20:34

能将你的软件给我发一份吗?我也是新手迷茫中。万分感谢!752210341@qq.com

相关推荐阅读
eleclike 2010-12-03 00:07
mark 一下
2010 mark...
eleclike 2009-05-13 15:34
GSM PDU格式短信解析器
 本软件用于解析GSM PDU格式短信,显示DCS=8BIT和DCS=16BIT两种编码方式的短信内容。下载地址为:https://static.assets-stash.eet-china.com/...
eleclike 2009-04-27 16:55
Unicode与ASCII转换工具
Unicode字符在许多场合都会经常使用到,比如GPRS模块的开发和USB字符串描述符的定义,本软件是一个Unicode与ASCII编码的转换工具v1.0版本.1.可以将IRA格式的Unicode数据...
eleclike 2009-04-03 12:40
TUSB3210复位系统
TUSB3210采用标准的8052内核,但因为其更多的片上外设使得复位电路比普通的8051单片机更复杂。复位电路图如下图所示:从图中可以分析:1.  复位源:a)         USB-FUNCTO...
eleclike 2009-03-31 13:43
MC55使用的串口工具介绍
MC55使用的串口工具介绍:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />1.使用...
eleclike 2009-03-22 15:54
QuickARM片内RAM调试
 QuickARM片内RAM调试<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />1....
我要评论
1
11
关闭 站长推荐上一条 /2 下一条