現(xiàn)在的企業(yè)對嵌入式軟件工程師定位差別也較大,主要是因為大家對嵌入式軟件工程師職責(zé)還不太了解。而從事嵌入式軟件開發(fā)必然離不開C語言的支撐。嵌入式C語言培訓(xùn)如何?今天我們先來談?wù)撓卵h(huán)條件。
嵌入式C語言培訓(xùn)中,計數(shù)循環(huán)是程序中十分常用的流程控制結(jié)構(gòu)。在C與驗證宏,常用下面累加計數(shù)的循環(huán)形式:
for(loop=1,loop<=limit;loop++)
而這種累加計數(shù)的方法符合一般的自然思維習(xí)慣,所以下面這種遞減方法很少使用:
for(loop=limit;loop!=0;loop--)
這兩種循環(huán)形式在邏輯上并沒有效率差異,但是映射到具體的體系結(jié)構(gòu)中時,就產(chǎn)生了大大是不同。
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
從中可以發(fā)現(xiàn),累加法比遞減法多用了1條指令,當循環(huán)次數(shù)比較大時,這2段代碼就會在性能上產(chǎn)生明顯的差異。其本質(zhì)原因是:當進行一個非0常數(shù)比較時,必須用專門的CMP指令進行判別。因此,在ARM的體系結(jié)構(gòu)下編程,建議采用遞減至0的方法來設(shè)置循環(huán)條件。
若你想通過正規(guī)的嵌入式C語言培訓(xùn)讓自己得到成長,了解嵌入式培訓(xùn)班哪家好是很關(guān)鍵的,在這個方面,粵嵌教育值得你考慮。