ARM匯編語言與嵌入式C混合編程.ppt

ARM匯編語言與嵌入式C混合編程.ppt

ID:51643168

大?。?68.50 KB

頁數(shù):52頁

時(shí)間:2020-03-27

ARM匯編語言與嵌入式C混合編程.ppt_第1頁
ARM匯編語言與嵌入式C混合編程.ppt_第2頁
ARM匯編語言與嵌入式C混合編程.ppt_第3頁
ARM匯編語言與嵌入式C混合編程.ppt_第4頁
ARM匯編語言與嵌入式C混合編程.ppt_第5頁
資源描述:

《ARM匯編語言與嵌入式C混合編程.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫

1、第8章ARM匯編語言與嵌入式C混合編程本章首先簡(jiǎn)要的介紹了嵌入式C語言的編程規(guī)范,嵌入式開發(fā)中常用的位運(yùn)算與控制位域及在嵌入式C程序設(shè)計(jì)中要注意的問題,為讀者進(jìn)行嵌入式C程序設(shè)計(jì)打基礎(chǔ)。然后介紹在ARM匯編語言與嵌入式C語言進(jìn)行相互調(diào)用的標(biāo)準(zhǔn)(AAPCS),并以大量的實(shí)例說明了相互調(diào)用應(yīng)注意的問題。內(nèi)容提要8.1嵌入式C編程規(guī)范8.2嵌入式C程序設(shè)計(jì)中的位運(yùn)算8.3嵌入式C程序設(shè)計(jì)中的幾點(diǎn)說明8.4嵌入式C程序設(shè)計(jì)格式8.5過程調(diào)用標(biāo)準(zhǔn)ATPCS與AAPCS8.6ARM匯編語言與嵌入式C混合編程8.1嵌入式C編程規(guī)范在當(dāng)前的嵌入式開發(fā)中

2、,嵌入式C語言是最為常見的程序設(shè)計(jì)語言,對(duì)于程序員來說,能夠完成相應(yīng)功能的代碼并不一定是優(yōu)秀的代碼。優(yōu)秀的代碼還要具備易讀性、易維護(hù)性、具有可移植和高可靠性。8.1.1嵌入式C程序書寫規(guī)范排版規(guī)則如下:(1)程序塊要采用縮進(jìn)風(fēng)格編寫(2)較長(zhǎng)的語句(例如超過80個(gè)字符)要分成多行書寫(3)循環(huán)、判斷等語句中若有較長(zhǎng)的表達(dá)式或語句,則要進(jìn)行適應(yīng)的劃分(4)若函數(shù)或過程中參數(shù)較長(zhǎng),也要進(jìn)行適當(dāng)?shù)膭澐?。?)一般不要把多個(gè)短語句寫在一行中(6)程序塊的分界符語句的大括號(hào)“{”與“}”一般獨(dú)占一行并且在同一列書寫規(guī)范示例:8.1.2命名規(guī)則(1

3、)標(biāo)識(shí)符的名稱要簡(jiǎn)明,能夠表達(dá)出確切的含義,可以使用完整的單詞或通常可以理解的縮寫。(2)如果在命名中使用特殊約定或縮寫,則要進(jìn)行注釋說明。(3)對(duì)于變量命名,一般不取單個(gè)字符,例如i、j、k...(4)函數(shù)名一般以大寫字母開頭;所有常量名字母統(tǒng)一用大寫。8.1.3注釋說明注釋有助于程序員理解程序的整體結(jié)構(gòu),也便于以后程序代碼的維護(hù)與升級(jí)。常用的規(guī)則如下:(1)注釋語言必須準(zhǔn)確、簡(jiǎn)潔且容易理解;(2)程序代碼源文件頭部應(yīng)進(jìn)行注釋說明;(3)函數(shù)頭部應(yīng)進(jìn)行注釋;(4)程序中所用到的特定含義的常量、變量,在聲明時(shí)都要加以注釋;(5)對(duì)于宏定

4、義、數(shù)據(jù)結(jié)構(gòu)聲明,如果其命名不是充分自注釋的,也要加以注釋。(6)如果注釋單獨(dú)占用一行,與其被注釋的內(nèi)容進(jìn)行相同的縮進(jìn)方式,一般將注釋與其上面的代碼用空行隔開(7)程序代碼修改時(shí),其注釋也要及時(shí)修改,一定要保證代碼與注釋保持一致。命名規(guī)則示例:8.2嵌入式C程序設(shè)計(jì)中的位運(yùn)算在嵌入式程序設(shè)計(jì)中,位操作是最常用的運(yùn)算之一,因?yàn)樵诤芏嗲闆r下要對(duì)寄存器中的某位或某個(gè)管腳進(jìn)行操作,這些都需要用位操作來完成。8.2.1按位與操作按位與運(yùn)算符“&”是把參與運(yùn)算的兩個(gè)操作數(shù)所對(duì)應(yīng)的各個(gè)二進(jìn)制位進(jìn)行按位相與。只有當(dāng)對(duì)應(yīng)的兩個(gè)二進(jìn)制位全為1時(shí),結(jié)果才為1

5、,否則為0。參與運(yùn)算的兩個(gè)操作數(shù)以補(bǔ)碼形式出現(xiàn)。例如7&3,補(bǔ)碼分別為00000111與00000011按位與運(yùn)算后結(jié)果為00000011等于十進(jìn)制的3。按位與操作可以實(shí)現(xiàn)將特定的位清零,也可以用于提取出某數(shù)的指定位。8.2.2按位或操作按位或操作運(yùn)算符“

6、”是把參與運(yùn)算的兩個(gè)操作數(shù)對(duì)應(yīng)的各個(gè)二進(jìn)制位進(jìn)行按位相或。對(duì)應(yīng)的兩個(gè)二進(jìn)制位中只要有一個(gè)為1,結(jié)果就為1,當(dāng)兩個(gè)對(duì)應(yīng)的二進(jìn)制位都為0時(shí),結(jié)果位為0。參與運(yùn)算的兩個(gè)操作數(shù)均以補(bǔ)碼形式出現(xiàn)。例如7

7、3,7的補(bǔ)碼為00000111,3的補(bǔ)碼為00000011,結(jié)果為00000111。按位與

8、操作可以實(shí)現(xiàn)將特定位的置位操作,也可以用于提取出某數(shù)的指定位。8.2.3按位異或操作按位異或運(yùn)算符“^”是將參與運(yùn)算的兩個(gè)操作數(shù)對(duì)應(yīng)的各個(gè)二進(jìn)制位進(jìn)行相異或,當(dāng)對(duì)應(yīng)的兩個(gè)二進(jìn)制位相異時(shí),結(jié)果位為1,相同時(shí)為0。參與運(yùn)算的兩個(gè)操作數(shù)均以補(bǔ)碼形式出現(xiàn)。例如7

9、3,7的補(bǔ)碼為00000111,3的補(bǔ)碼為00000011,結(jié)果為00000100。應(yīng)用舉例:通過3次異或操作將寄存器rPDATAE中的內(nèi)容與變量tmp的值進(jìn)行交換。rPDATAE=rPDATAE^tmptmp=tmp^rPDATAErPDATAE=rPDATAE^tmp8.2.4取反

10、操作取反運(yùn)算符“~”實(shí)現(xiàn)對(duì)參與運(yùn)算的操作數(shù)對(duì)應(yīng)的各個(gè)二進(jìn)制位按位求反。取反運(yùn)算符“~”具有右結(jié)合性。所有1變?yōu)?,0變?yōu)?。例如~(01011001)=10100110。在程序中主要用于將操作數(shù)的某位或某些位取反,為其他操作提供數(shù)據(jù)準(zhǔn)備。8.2.5移位操作移位操作分為左移操作與右移操作。左移運(yùn)算符“<<”實(shí)現(xiàn)將“<<”左邊的操作數(shù)的各個(gè)二進(jìn)制位向左移動(dòng)“<<”右邊操作數(shù)所指定的位數(shù),高位丟棄,低位補(bǔ)0。其值相當(dāng)于乘以:2“左移位數(shù)”次方。右移運(yùn)算符“>>”實(shí)現(xiàn)將“>>”左邊的操作數(shù)的各個(gè)二進(jìn)制位向右移動(dòng)“<<”右邊操作數(shù)所指定的位數(shù)。對(duì)

11、于空位的補(bǔ)齊方式,無符號(hào)數(shù)與有符號(hào)數(shù)是有區(qū)別的。對(duì)無符號(hào)數(shù)進(jìn)行右移時(shí),低位丟棄,高位用0補(bǔ)齊,其值相當(dāng)于除以:2“右移位數(shù)”次方8.3嵌入式C程序設(shè)計(jì)中的幾點(diǎn)說明8.3.1volatile限制符8.3.2地

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。