gzyueqian
13352868059

嵌入式C语言循环条件介绍 粤嵌嵌入式培训哪里好?

更新时间: 2019-04-01 14:58:52来源: 嵌入式培训浏览量:4610

  现在的企业对嵌入式软件工程师定位差别也较大,主要是因为大家对嵌入式软件工程师职责还不太了解。而从事嵌入式软件开发必然离不开C语言的支撑。嵌入式C语言培训如何?今天我们先来谈论下循环条件。

  嵌入式C语言培训中,计数循环是程序中十分常用的流程控制结构。在C与验证宏,常用下面累加计数的循环形式:

  for(loop=1,loop<=limit;loop++)

  而这种累加计数的方法符合一般的自然思维习惯,所以下面这种递减方法很少使用:

  for(loop=limit;loop!=0;loop--)

  这两种循环形式在逻辑上并没有效率差异,但是映射到具体的体系结构中时,就产生了大大是不同。

  int fact1 (int limit)                             int fact1 (int limit)

  {                                                                           {

  ...                                                                          …

  for (i=1;i<=limit;i++)                                              for (i=limit;i!=0;i--)

  (                                                                            {

  fact=fact*i;                                                             fact=fact*i;

  )                                                                                   }

  ...                                                                                 …

  }                                                                           }

  Fact1                                                                     Fact2

  ... ...                                                                             … …

  0x000010: MUL R2,R1,R2                                       0x000010: MUL R0,R1,R0

  0x000014: ADD R1,R1,#1                                       0x000014: SUBS R1,R1,#1

  0x000018: CMP R2,R0                                            0x00001C: BNE 0x10

  0x00001C: BLE 0x10                                              … …

  ... ...

  0x000024: MOV PC,LR

  从中可以发现,累加法比递减法多用了1条指令,当循环次数比较大时,这2段代码就会在性能上产生明显的差异。其本质原因是:当进行一个非0常数比较时,必须用专门的CMP指令进行判别。因此,在ARM的体系结构下编程,建议采用递减至0的方法来设置循环条件。

  若你想通过正规的嵌入式C语言培训让自己得到成长,了解嵌入式培训班哪家好是很关键的,在这个方面,粤嵌教育值得你考虑。


免费预约试听课