文章編號:1672-5913(2008)06-0098-02
摘要:本文探討了基于C語言的ARM嵌入式程序設計課程中學生反映不好掌握的一些知識點。
關鍵詞:ARM嵌入式;C語言;程序設計;技巧
中圖分類號:G642
文獻標識碼:B
引言
嵌入式C語言程序設計是利用基本的C語言知識,面向嵌入式工程實際應用進行程序設計語言。如何能夠在嵌入式系統開發中熟練、正確地運用C語言開發出高質量的應用程序,是學習嵌入式程序設計的關鍵。下面介紹基于C語言的ARM嵌入式程序設計課程中學生反映不好掌握的一些難點。
1變量定義
先看下面一個例子:
char a; char a;
short b; char c;
char c; short b;
int d; int d;
這里定義的4個變量形式都一樣,只是次序不同,卻導致了在最終映像中不同的數據布局,如圖1所示。顯然,第2種方式節約了更多的存儲空間(Pad為無意義的填充數據)。
由此可見,在變量聲明時,最好把所有相同類型的變量放在一起定義,這樣可以優化存儲器布局。

圖1變量在數據區里的布局
對于局部變量類型的定義,一般情況下,人們總是設法使用short或char來定義變量,以節省存儲空間;但是,當一個函數的局部變量數目有限時,其結果恰恰相反。因為編譯器會把局部變量分配給內部寄存器,每個變量占用一個寄存器,如圖2所示。假定a1是任意可能的寄存器存儲函數的局部變量,同樣完成加1的操作,32位的int型變量最快,只用1條加法指令。而8位和16位變量,完成加法操作后,還需要在32位的寄存器中進行括號擴展,其中有符號的變量,要用邏輯左移(LSL)和算術右移(ASR)2條指令才能完成符號擴展;……