单片机开发、嵌入式系统开发 速度最快的还是C语言

2011年03月11日 11:03    发布者:绝对好文
作者:张鲁波

芯片的发展趋势是体积越来越小,速度越来越快,电压越来越低、能耗越来越省。

软件就难说了。 最开始用机器码的时候,开发速度很慢。

后来才有汇编语言,可读性好多了,出错的概率也小了。汇编语言和机器码是有一一对应的关系的,就是为了容易维护才用汇编代替机器码的。

然后,出现C语言,那简直是一场革命,编程的速度快了,可读性好了,可维护性也增强了。

无论是C语言还是汇编语言,都不能直接运行,必须通过编译系统把它们转化为机器码,才能在芯片中运行。在C编过程中,有一个中间产物,那就是汇编语言。

接下来,软件越来越复杂,客观上,也要求软件要发展。出现C++之后,的确带来了很多便利。但是,C++运用到嵌入式系统中的最大缺点是它的运行速度慢。

不经常用汇编语言的人,一般很难理解这一点。C++的最大优点是他的封装好,而它的封装是通过类(class)来实现的。编译器在编译的C++过程中,首先给某个类分配一个空间,然后定义一个指针指向这个类。而类中的变量的位置都用这个类的地址加上一个偏移量来表示,这样在访问类中的变量时,就不是直接访问这个变量,而是读取类的指针,然后在加上这个变量在类中的偏移量,得到变量的地址,然后再通过地址读取变量。 访问类中的变量,都是要通过指针,要比直接访问用更多的指令,所以速度会降低。

所以,如果不是非常复杂的系统,如果不是用速度很快的硬件,最好不要用C++,还是C语言更加实际一些。

而和汇编语言比起来,C语言的编程速度,可读性,可维护性是不用说了,很多人在要求速度的时候都会想到汇编。其实这并不是一个明智的选择。汇编之所以有时候快,是因为它可以接用寄存器,或者芯片内部的高速RAM。如果不是因为这两种情况,就不要盲目的使用汇编,选择一个更好的算法往往是明智的选择。

我最喜欢的永远都是C.

网友评论

hqy_huang 2011年05月03日
支持