现在的企业对嵌入式软件工程师定位差别也较大,主要是因为大家对嵌入式软件工程师职责还不太了解。而从事嵌入式软件开发必然离不开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语言培训让自己得到成长,了解嵌入式培训班哪家好是很关键的,在这个方面,粤嵌教育值得你考虑。