arm匯編語(yǔ)言和c c語(yǔ)言溷合編程的方法

arm匯編語(yǔ)言和c c語(yǔ)言溷合編程的方法

ID:8191319

大?。?40.91 KB

頁(yè)數(shù):3頁(yè)

時(shí)間:2018-03-09

arm匯編語(yǔ)言和c c語(yǔ)言溷合編程的方法_第1頁(yè)
arm匯編語(yǔ)言和c c語(yǔ)言溷合編程的方法_第2頁(yè)
arm匯編語(yǔ)言和c c語(yǔ)言溷合編程的方法_第3頁(yè)
資源描述:

《arm匯編語(yǔ)言和c c語(yǔ)言溷合編程的方法》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。

1、電子測(cè)量技術(shù)第29卷第6期嵌入式技術(shù)ELECTRONICMEASUREMENTTECHNOLOGY2006年12月ARM匯編語(yǔ)言和C/C++語(yǔ)言混合編程的方法史斌(天津大學(xué)電子信息工程學(xué)院天津300072)摘要:文中首先對(duì)在嵌入式系統(tǒng)設(shè)計(jì)中廣泛應(yīng)用的ARM系列微處理器做了簡(jiǎn)要介紹;接著詳細(xì)闡述了基于ARM核的嵌入式微處理器的匯編語(yǔ)言和C/C++語(yǔ)言混合編程的方法:包括代碼簡(jiǎn)潔而功能有限的在線匯編技術(shù)和功能強(qiáng)大、基于模塊化設(shè)計(jì)的ATPCS規(guī)則;最后給出了詳細(xì)的示例代碼和分析。關(guān)鍵詞:嵌入式系統(tǒng);ARM;匯編語(yǔ)言;在線匯編;ATPCS規(guī)則ProgrammingofARMwithb

2、othassemblyandC/C++languageShiBin(SchoolofElectronic&InformationEngineeringTianjinUniversity,Tianjin300072)Abstract:ThisarticlebrieflyintroducedARMserialmicroprocessor,whichisextensivelyusedinembeddedsystemdesign;andthengavethetwomethodsofARM2coreembeddedprocessorprogrammingwithbothassembly

3、andC/C++Languageincludingin2lineassemblywhichiscompactbuthavesomelimitsandATPCSruleswhicharepowerfulandmodularized.Atlast,thereissomesourcecodewithanalysisfordemonstration.Keywords:embeddedsystem;ARM;assembly;in2lineassembly;ATPCS{0引言MRSr0,CPSR;//將狀態(tài)積存器的內(nèi)容傳遞ARM是一種高性能、低功耗的32位RISC嵌入式處到r0理器系列。

4、目前在各種嵌入式系統(tǒng)中ARM獲得了廣泛的ORRR0,R0,0x000000C0;//通過(guò)或運(yùn)算將應(yīng)用。r0的第6,7兩位置1,其它位不變ARM編程可以使用匯編語(yǔ)言和C/C++語(yǔ)言,使用MSRCPSR_c,r0;//將r0的低8位送到匯編語(yǔ)言編程目標(biāo)代碼效率較高,但較為繁瑣,設(shè)計(jì)大型CPSR的低8位,以屏蔽FIQ中斷系統(tǒng)時(shí)不易維護(hù);而C/C++語(yǔ)言比較簡(jiǎn)潔明了,但代碼}效率即使經(jīng)過(guò)優(yōu)化,也比匯編語(yǔ)言低,特別是在一些實(shí)時(shí)INTPND=0xffffffff;//清除全部中斷標(biāo)志位,性強(qiáng)和需要精細(xì)處理的場(chǎng)合,C/C++語(yǔ)言難以勝任。因C/C++代碼此一個(gè)折中的辦法是:使用C/C++語(yǔ)

5、言寫(xiě)整體框架,而}使用匯編語(yǔ)言實(shí)現(xiàn)局部模塊,這就涉及到匯編語(yǔ)言和C/C因?yàn)镃PSR是一個(gè)物理寄存器,沒(méi)有存儲(chǔ)器的I/O映++語(yǔ)言混合編程的問(wèn)題。為此本文介紹了在ADS中常射,而ARM的C/C++語(yǔ)言使用的是ANSI標(biāo)準(zhǔn),不像用的2種匯編語(yǔ)言和C/C++語(yǔ)言混合編程方法:在線匯KeilC51那樣有諸如sbit和sfr的擴(kuò)展,所以訪問(wèn)CPSR的編(in2lineassembly)和ATPCS(ARM2ThumbProduce唯一方法就是用匯編語(yǔ)言;通過(guò)在C/C++代碼中插入一CallStandard)規(guī)則。段簡(jiǎn)短的匯編代碼,來(lái)實(shí)現(xiàn)對(duì)CPSR的訪問(wèn)。再比如一些波形發(fā)生的場(chǎng)合,需要每

6、隔一段精確的時(shí)間向端口送數(shù)1在線匯編(in2lineassembly)據(jù),那么C/C++代碼經(jīng)編譯后產(chǎn)生的指令數(shù)是無(wú)法預(yù)知在線匯編的具體含義就是:在C/C++代碼中插入一的,所以無(wú)法實(shí)現(xiàn)精確定時(shí),因此就要使用在線匯編。段匯編代碼,以實(shí)現(xiàn)某種C/C++無(wú)法達(dá)到的效果,例如:在線匯編通過(guò)__asm關(guān)鍵字實(shí)現(xiàn),一般格式為:{??//C/C++代碼INTMSK=0xffffffff;//屏蔽所有的向量中斷,__asmC/C++代碼{__asm//插入一段匯編代碼指令1;指令2;指令3;??·89·第29卷電子測(cè)量技術(shù)指令n;指令n+1;??是C/C++模塊(代碼段)和匯編模塊(函數(shù))

7、相互調(diào)用的??一套規(guī)則(很多C/C++編譯器都有類似的規(guī)則),其具體}//括號(hào)內(nèi)為匯編代碼內(nèi)容為(不涉及ARM代碼和Thumb代碼的相互調(diào)用)。??//C/C++代碼2.1被調(diào)用模塊的寄存器使用其中匯編指令的操作數(shù)可以是物理寄存器,也可以是調(diào)用模塊和被調(diào)用模塊通過(guò)r0r3傳遞參數(shù),因此參數(shù)C/C++語(yǔ)言的變量、行號(hào)和表達(dá)式,這點(diǎn)是比純匯編代碼少于4個(gè)時(shí)可以隨意使用剩余的寄存器而不必保存和恢最大的方便之處。其實(shí)寫(xiě)在線匯編代碼的思路和純匯編復(fù);使用r4r11之前一定要先在堆棧中保存起來(lái),退出時(shí)再差不多,但要

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

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

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(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)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。