版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第7章 ARM程序和Thumb程序混合使用ARM體系結(jié)構(gòu)支持體系結(jié)構(gòu)支持ARM程序和程序和Thumb程序混合程序混合使用。本章介紹使用。本章介紹ARM程序和程序和Thumb程序混合使程序混合使用時(shí)需要的相關(guān)技術(shù)。用時(shí)需要的相關(guān)技術(shù)。27.1 概概 述述1. ARM程序和程序和Thumb程序混合使用的場(chǎng)合程序混合使用的場(chǎng)合強(qiáng)調(diào)速度的場(chǎng)合有一些功能只有ARM程序能夠完成當(dāng)處理器進(jìn)入異常中斷處理程序時(shí),程序狀態(tài)自動(dòng)切換到ARM狀態(tài)ARM處理器總是從ARM狀態(tài)開始執(zhí)行2. 在編譯或者匯編時(shí)使用選項(xiàng)在編譯或者匯編時(shí)使用選項(xiàng)apcs/interwork37.2 在匯編語(yǔ)言程序中通過(guò)用戶代碼支持在匯編語(yǔ)言程
2、序中通過(guò)用戶代碼支持interwork對(duì)于對(duì)于C/C+源程序而言,只要在編譯時(shí)指定源程序而言,只要在編譯時(shí)指定-apcs /interwork選項(xiàng),連接器生成的代碼就遵守支持選項(xiàng),連接器生成的代碼就遵守支持ARM程序和程序和Thumb程序混合使用的程序混合使用的ATPCS。而對(duì)于匯編源程序而言,。而對(duì)于匯編源程序而言,用戶必須保證編寫的代碼遵守支持用戶必須保證編寫的代碼遵守支持ARM程序和程序和Thumb程序程序混合使用的混合使用的ATPCS。對(duì)于匯編程序來(lái)說(shuō),可以有兩種方法來(lái)實(shí)現(xiàn)程序狀態(tài)的切對(duì)于匯編程序來(lái)說(shuō),可以有兩種方法來(lái)實(shí)現(xiàn)程序狀態(tài)的切換。第一種方法是利用連接器提供的小程序換。第一種方法
3、是利用連接器提供的小程序(veneers)來(lái)實(shí)來(lái)實(shí)現(xiàn)程序狀態(tài)的切換,這時(shí)用戶可以使用指令現(xiàn)程序狀態(tài)的切換,這時(shí)用戶可以使用指令BL來(lái)調(diào)用子程來(lái)調(diào)用子程序;另一種方法是用戶自己編寫狀態(tài)切換的程序,這種方法序;另一種方法是用戶自己編寫狀態(tài)切換的程序,這種方法編寫的程序需要的代碼更少,運(yùn)行的速度更快。本節(jié)主要介編寫的程序需要的代碼更少,運(yùn)行的速度更快。本節(jié)主要介紹第二種方法。紹第二種方法。這里介紹這里介紹ARM中與這個(gè)問(wèn)題相關(guān)的指令、偽操作以及程序中與這個(gè)問(wèn)題相關(guān)的指令、偽操作以及程序設(shè)計(jì)。設(shè)計(jì)。47.2.1 可以實(shí)現(xiàn)程序狀態(tài)切換的指令可以實(shí)現(xiàn)程序狀態(tài)切換的指令1. BX指令指令2. 第第1種格式的
4、種格式的BLX指令指令BLX(1)3. 第第2種格式的種格式的BLX指令指令BLX(2)4. LDR、LDM及及POP指令用于程序狀態(tài)的切換指令用于程序狀態(tài)的切換57.2.2 與程序狀態(tài)切換相關(guān)的偽操作與程序狀態(tài)切換相關(guān)的偽操作ARM匯編器既可以處理匯編器既可以處理ARM指令,也可以處理指令,也可以處理Thumb指指令。這時(shí),通過(guò)下面兩個(gè)偽操作告訴令。這時(shí),通過(guò)下面兩個(gè)偽操作告訴ARM匯編器將要處理匯編器將要處理的是哪一種指令。的是哪一種指令。CODE16偽操作:告訴匯編編譯器后面的指令序列為16位的Thumb指令。CODE32偽操作:告訴匯編編譯器后面的指令序列為32位的ARM指令。語(yǔ)法格式
5、語(yǔ)法格式CODE16CODE32使用說(shuō)明使用說(shuō)明當(dāng)匯編源程序中同時(shí)包含ARM指令和Thumb指令時(shí),使用CODE16偽操作告訴匯編編譯器后面的指令序列為16位的Thumb指令;使用CODE32偽操作告訴匯編編譯器后面的指令序列為32位的ARM指令。但是,CODE16偽操作和CODE32偽操作只是告訴編譯器后面指令的類型,該偽操作本身并不進(jìn)行程序狀態(tài)的切換。67.2.3 進(jìn)行狀態(tài)切換的匯編程序?qū)嵗M(jìn)行狀態(tài)切換的匯編程序?qū)嵗旅娼o出一個(gè)狀態(tài)切換匯編程序的例子:下面給出一個(gè)狀態(tài)切換匯編程序的例子:參見教材P255可以通過(guò)下面的步驟來(lái)編譯和運(yùn)行上面的例子??梢酝ㄟ^(guò)下面的步驟來(lái)編譯和運(yùn)行上面的例子。(1
6、)用文本編輯器將上述代碼輸入,并保存成文件addreg.s。(2)用asm -g addreg.s命令行匯編該程序。(3)用armlink addreg.o -o addreg命令行連接生成映像文件。(4)用armsd addreg加載該映像文件。(5)通過(guò)step單步跟蹤該程序。787.3 在在C/C+程序中實(shí)現(xiàn)程序中實(shí)現(xiàn)interwork1. 需要考慮需要考慮interwork的場(chǎng)合的場(chǎng)合如果C/C+程序中包含需要返回到另一種程序狀態(tài)的子程序,需要在編譯該C/C+程序時(shí)指定選項(xiàng)-apcs /interwork。如果C/C+程序間接地調(diào)用另一種指令系統(tǒng)的子程序,或者C/C+程序中地虛函數(shù)調(diào)用
7、另一種指令系統(tǒng)的子程序時(shí),需要在編譯該C/C+程序時(shí)指定-apcs /interwork選項(xiàng)。如果調(diào)用者程序和被調(diào)用的程序是不同指令集的,而被調(diào)用者是non-interwork代碼,這時(shí),不要使用函數(shù)指針來(lái)調(diào)用該被調(diào)用程序??偟貋?lái)說(shuō),當(dāng)程序中包含了Thumb指令和ARM指令時(shí),使用函數(shù)指針時(shí),要特別注意。如果在連接時(shí)目標(biāo)文件中包含了Thumb程序,這時(shí),連接器會(huì)選擇Thumb C/C+庫(kù)進(jìn)行連接。通常情況下,如果不能肯定程序中不進(jìn)行程序狀態(tài)切換,使用編譯選項(xiàng)-apcs /interwork來(lái)編譯程序。97.3 在在C/C+程序中實(shí)現(xiàn)程序中實(shí)現(xiàn)interwork2. 編譯選項(xiàng)編譯選項(xiàng)-apcs
8、/interwork的作用的作用當(dāng)C/C+程序中包含了程序狀態(tài)切換時(shí),可以在編譯時(shí)指定編譯選項(xiàng)-apcs /interwork,格式如下:tcc -apcs /interworkarmcc -apcs /interworktcpp -apcs /interworkarmcpp -apcs /interwork3. C語(yǔ)言的語(yǔ)言的interwork實(shí)例實(shí)例參見教材P258107.4 在匯編語(yǔ)言程序中通過(guò)連接器支持在匯編語(yǔ)言程序中通過(guò)連接器支持interwork7.2節(jié)中,介紹了用戶在匯編程序中如何編寫實(shí)現(xiàn)節(jié)中,介紹了用戶在匯編程序中如何編寫實(shí)現(xiàn)程序狀態(tài)切換的代碼。本節(jié)介紹利用連接器生成的程序狀態(tài)
9、切換的代碼。本節(jié)介紹利用連接器生成的代碼段實(shí)現(xiàn)在匯編程序之間以及匯編程序和代碼段實(shí)現(xiàn)在匯編程序之間以及匯編程序和C/C+程序之間實(shí)現(xiàn)程序狀態(tài)的切換。程序之間實(shí)現(xiàn)程序狀態(tài)的切換。通常,將連接器生成的用于程序狀態(tài)切換的代碼段通常,將連接器生成的用于程序狀態(tài)切換的代碼段稱為稱為veneers。117.4.1 利用利用veneers實(shí)現(xiàn)匯編程序間的程序狀態(tài)切實(shí)現(xiàn)匯編程序間的程序狀態(tài)切換換利用利用veneers實(shí)現(xiàn)匯編程序間的程序狀態(tài)切換時(shí),實(shí)現(xiàn)匯編程序間的程序狀態(tài)切換時(shí),可以按照下面的方式來(lái)編寫匯編程序。由于利用了可以按照下面的方式來(lái)編寫匯編程序。由于利用了連接器生成的連接器生成的veneers,匯編
10、程序的編寫方法與,匯編程序的編寫方法與7.2節(jié)中有所不同。節(jié)中有所不同。調(diào)用者程序(Caller)可以不考慮程序狀態(tài)切換的問(wèn)題。它使用BL指令來(lái)調(diào)用子程序,在編譯時(shí)可以指定編譯選項(xiàng)-apcs /interwork,也可以指定編譯選項(xiàng)-apcs /nointerwork。被調(diào)用的子程序(Callee)使用BX指令返回,在編譯時(shí),要指定編譯選項(xiàng)-apcs /interwork。127.4.2 利用利用veneers實(shí)現(xiàn)匯編程序與實(shí)現(xiàn)匯編程序與C/C+程序間的程序狀態(tài)切換程序間的程序狀態(tài)切換處于一種程序狀態(tài)處于一種程序狀態(tài)(ARM狀態(tài)或者狀態(tài)或者Thumb狀態(tài)狀態(tài))的的C/C+程程序可以調(diào)用處于另一
11、種程序狀態(tài)序可以調(diào)用處于另一種程序狀態(tài)(Thumb狀態(tài)或者狀態(tài)或者ARM狀狀態(tài)態(tài))的匯編語(yǔ)言程序。這時(shí),程序的編寫應(yīng)符合下面的規(guī)的匯編語(yǔ)言程序。這時(shí),程序的編寫應(yīng)符合下面的規(guī)則:則:C/C+程序可以不必關(guān)心程序狀態(tài)的切換,編譯時(shí)可以指定編譯選項(xiàng)-apcs /interwork,也可以指定編譯選項(xiàng)-apcs /nointerwork。被調(diào)用的匯編程序使用BX指令返回,并且編譯時(shí)必須指定編譯選項(xiàng)-apcs /interwork。處于一種程序狀態(tài)處于一種程序狀態(tài)(ARM狀態(tài)或者狀態(tài)或者Thumb狀態(tài)狀態(tài))的匯編語(yǔ)言的匯編語(yǔ)言程序可以調(diào)用處于另一種程序狀態(tài)程序可以調(diào)用處于另一種程序狀態(tài)(Thumb狀態(tài)或者狀態(tài)或者ARM狀
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024正規(guī)航空航天產(chǎn)業(yè)投資借款協(xié)議3篇
- 天然氣灶具知識(shí)培訓(xùn)課件
- 2024房屋典當(dāng)借款合同
- 銀行前臺(tái)工作經(jīng)驗(yàn)分享
- 班主任期中工作自我評(píng)價(jià)與反思
- 汽車設(shè)計(jì)師塑造時(shí)尚動(dòng)感的汽車外形
- 2024年項(xiàng)目掛鉤保密協(xié)議
- 安全知識(shí)培訓(xùn)課件
- 攝影工作總結(jié)店員工作總結(jié)
- 云南國(guó)土資源職業(yè)學(xué)院《工程材料及成型技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 華電考試初級(jí)理論復(fù)習(xí)試題及答案
- 第十七屆山東省職業(yè)院校技能大賽市場(chǎng)營(yíng)銷賽項(xiàng)賽卷第一套
- 塔吊司機(jī)和指揮培訓(xùn)
- 紅色簡(jiǎn)約2025蛇年介紹
- 專題3-6 雙曲線的離心率與常用二級(jí)結(jié)論【12類題型】(解析版)-A4
- 光伏電站運(yùn)維課件
- 糧庫(kù)工程合同范本
- 江蘇省蘇州市2023-2024學(xué)年高一上學(xué)期期末學(xué)業(yè)質(zhì)量陽(yáng)光指標(biāo)調(diào)研試題+物理 含解析
- 農(nóng)業(yè)合作社線上線下營(yíng)銷方案
- 研發(fā)實(shí)驗(yàn)室安全培訓(xùn)
- 電信公司網(wǎng)絡(luò)安全管理制度
評(píng)論
0/150
提交評(píng)論