新闻中心

EEPW首页>嵌入式系统>设计应用> 基于ARM的高效C语言编程

基于ARM的高效C语言编程

作者: 时间:2010-09-29 来源:网络 收藏

  汇编代码1:

  mov r0,#0

  mov r1,#0

  add1

  add r1,r1,#1

  cmp r1,#0x0a

  add r0,r1,r0

  bcc add1

  汇编代码2:

  mov r0,#0

  mov r1,#0x0a

  add2

  subs r1,r1,#1

  add r0,r1,r0

  bne add2

  比较代码1和代码2,两者的功能是相同的,但是代码2在循环中少了1条指令。该循环的执行次数为10次,即在执行时共减少了10条指令。

  3.2 内联函数的使用

  当函数体代码较少(通常只有一两条语句),且又被经常调用时,可将它设为内联函数(inline)。对内联函数的调用类似于宏定义的展开,因此没有函数调用的开销(即参数的传递和函数值的返回),只是增加了被调用函数的代码量。

  例如在嵌入式系统中,经常访问的外设端口的读写代码就可以设成内联函数,以提高执行效率。外设寄存器的读写函数如下:

  inline unsigned short reg_read(unsigned short reg){

  return (unsigned short)*(volatile unsigned short *)( reg);//外设寄存器的读函数

  }

  inline void reg_write(unsigned short reg, unsigned short val){

  *(volatile unsigned short *)(reg)=val;//外设寄存器的写函数

  }

  这两个函数的共同特点是:函数体的代码很少,只有1个语句;使用的局部变量很少,只有1~2个参数。由于定义为内联函数,程序的可读性较好;在执行时由于没有调用开销,执行效率较高;函数体很小,在被展开时空间开销不大。

  结语

  由于嵌入式系统对存储空间的限制和实时性的需求,在编写代码时必须采用相应的方法和原则以减少代码的空间开销和时间开销。代码优化需要花费时间,并且代码优化后将降低源代码的可读性。因此,只有对经常被调用且对性能影响较大的函数进行优化,才能最有效地优化系统。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭