篇幅太长,不利于阅读 完整版已经做成PDF版本 有需要的可以在文末获取关键字下载 1.概述 嵌入式系统是指完成一种或几种特定功能的计算机系统,具有自动化程度高,响应速度快等优点,目前已广泛应用于消费电子,工业控制等领域.嵌入式系统受其使用的硬件以及运行环境的限制,非常注重代码的时间和空间效率,因此选择一种合适的开发语言十分重要.目前,在嵌入式系统开发中可使用的语言很多,其中C语言应用得最广泛.虽然用C语言编程具有许多优点,但基于嵌入式系统的C语言和标准C语言又有很大区别.接下来我结合嵌入式系统的特点和自己的一些积累,讨论在程序设计中代码优化的一些小技巧。 2.嵌入式C语言的特点 作为一种结构化程序设计语言,C语言兼顾多种高级语言的特点,具有很强的功能性和可移植性。但在嵌入式系统开发中,出于对低价产品的需求,系统的计算能力和存储容量都非常有限,因此如何利用好这些资源就显得十分重要。开发人员应注意嵌入式C语言和标准C语言的区别,减少生成代码长度,提高程序执行效率,在程序设计中对代码进行优化。 3.C代码在程序中的优化 现在的C编译器会自动对代码进行优化,但这些优化是对执行速度和代码长度的平衡.如果要获得更小且执行效率更高的代码,需要程序员手工对代码进行优化。 4.变量类型的定义 不同的数据类型所生成的机器代码长度相差很多,变量类型选取的范围越小运行速度越快,占用的内存越少.能够使用字符型(char)定义的变量,就不要使用整型(int)变量来定义;能够使用整型变量定义的变量就不要用长整型(longint),能不使用浮点型(float)变量就不要使用浮点型变量.相同类型的数据类型,有无符号对机器代码长度也有影响.因此我们应按照实际需要合理的选用数据类型.当然,在定义变量后不要超过变量的作用范围,如果超过变量的范围赋值,C编译器并不报错,但程序运行结果却错了,而且这样的错误很难发现. 5.算法优化 算法优化指对程序时空复杂度的优化:在PC机上进行程序设计时一般不必过多关注程序代码的长短,只需考虑功能的实现,但嵌入式系统就必须考虑系统的硬件资源,在程序设计时,应尽量采用生成代码短的算法,在不影响程序功能实现的情况下优化算法. 6.适当的使用宏 在C程序中使用宏代码可以提高程序的执行效率.宏代码本身不是函数.但使用起来像函数.函数调用要使用系统的栈来保存数据,同时CPU在函数调用时需要保存和恢复当前的现场,进行进栈和出栈操作,所以函数调用也需要CPU时间.而宏定义就没有这个问题:宏定义仅仅作为预先写好的代码嵌入到当前程序中,不产生函数调用,所占用的仅仅是一些空间,省去了参数压栈,生成汇编语言的call调用,返回参数,执行return等过程,从而提高了程序的执行速度.虽然宏破坏了程序的可读性,使排错更加麻烦,但对于嵌入式系统,为了达到要求的性能,嵌入代码常常是必须的做法. 此外,我们还要避免不必要的函数调用,请看下面的代码: void str_print(char*str) { int i; for(i=0;i<strlen(str);i++) { printf(“%c”,str[i]); } } void str_print1(char*str) { int len; len=strlen(str); for(i=0;i<len;i++) { printf(“%c”,str[i]); } } 请注意,这两个函数的功能相似.然而,第一个函数调用strlen函数多次,而第二个函数只调用函数strlen一次.因此第二个函数性能明显比第一个好. 公众号排版,部分代码版式不佳 完整版请下载PDF版本 资料领取方式 在公众号后台发送关键字 领取|嵌入式C语言的14个小技巧 建议直接复制上述蓝色文字到公众号后台发送 扫描下方二维码 备注加群可以进高速PCB设计交流群 关注我们,学习更多 更多历史文章请点击下方 |