下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、arm的位置無關(guān)程序設(shè)計處理器支持位置無關(guān)的程序設(shè)計,這種程序加載到存儲器的隨意地址空間都可以正常運(yùn)行,其設(shè)計辦法在應(yīng)用系統(tǒng)開發(fā)中具有重要的作用。尤其在裸機(jī)狀態(tài)下開發(fā)bootloader程序及舉行內(nèi)核初始化設(shè)計;利用位置無關(guān)的程序設(shè)計辦法還可以在詳細(xì)應(yīng)用中用于構(gòu)建高效率動態(tài)鏈接庫,因而了解位置無關(guān)的程序設(shè)計辦法,有助于開發(fā)人員設(shè)計出結(jié)構(gòu)容易、清楚的應(yīng)用程序。應(yīng)用程序必需經(jīng)過編譯、匯編和鏈接后才變成可執(zhí)行文件,在鏈接時,要對全部目標(biāo)文件舉行重定位(relocation),建立符號引用規(guī)章,同時為變量、函數(shù)等分配運(yùn)行地址。當(dāng)程序執(zhí)行時,系統(tǒng)必需把代碼加載到鏈接時所指定的地址空間,以保證程序在執(zhí)行過
2、程中對變量、函數(shù)等符號的正確引用,使程序正常運(yùn)行。在具有操作系統(tǒng)的系統(tǒng)中,重定位過程由操作系統(tǒng)自動完成。在設(shè)計bootloader程序時,必需在裸機(jī)環(huán)境中舉行,這時bootloader映像文件的運(yùn)行地址必需由程序員設(shè)定。通常狀況下,將bootloader程序下載到rom的0x0地址舉行啟動,而在大多數(shù)應(yīng)用系統(tǒng)中,為了迅速啟動,首先將bootloader程序拷貝到sdram中再運(yùn)行。普通狀況下,這兩者的地址并不相同,程序在sdram中的地址重定位過程必需由程序員完成。事實上,因為bootloader是系統(tǒng)上電后要執(zhí)行的第一段程序,bootloader程序的拷貝和在這之前的全部工作都必需由其自身來
3、完成,而這些命令都是在rom中執(zhí)行的。也就是說,這些代碼即使不在鏈接時所指定的運(yùn)行時地址空間,也可以正確執(zhí)行。這就是位置無關(guān)代碼,它是一段加載到隨意地址空間都能正常執(zhí)行的特別代碼。位置無關(guān)代碼常用于以下場合:程序在運(yùn)行期間動態(tài)加載到內(nèi)存;程序在不同場合與不同程序組合后加載到內(nèi)存(如分享的動態(tài)鏈接庫);在運(yùn)行期間不同地址互相之間的映射(如bootloader程序)。雖然在用gcc編譯時,用法-f選項可為產(chǎn)生位置無關(guān)代碼,但這并不能修正程序設(shè)計中固有的位置相關(guān)性缺陷。特殊是匯編語言代碼,必需由程序員遵循一定的程序設(shè)計準(zhǔn)則,才干保證程序的位置無關(guān)性。arm程序的位置無關(guān)可執(zhí)行文件pie(positi
4、onindependent executable)包括位置無關(guān)代碼pic和位置無關(guān)數(shù)據(jù)pid(positionindependent data)兩部分。pid主要針對可讀寫數(shù)據(jù)段(.data段),其中保存已賦初值的全局變量。為實現(xiàn)其位置無關(guān)性,通常用法寄存器r9作為靜態(tài)基址寄存器,使其指向該可讀寫段的首地址,并用法相對于基址寄存器的偏移量來對該段的變量舉行尋址。這種辦法常用于為可重入程序的多個實例產(chǎn)生多個自立的數(shù)據(jù)段。在程序設(shè)計中,普通不必考慮可讀寫段的位置無關(guān)性,這主要是由于可讀寫數(shù)據(jù)主要分配在sdram中。pic包括程序中的代碼和只讀數(shù)據(jù)(.text段),為保證程序能在rom和sdram空
5、間都能正確運(yùn)行(如裸機(jī)狀態(tài)下的bootloader程序),必需采納位置無關(guān)代碼程序設(shè)計。pic遵循只讀段位置無關(guān)ropi(readonly position independence)的atpcs(armthumb procedure call standard)的程序設(shè)計規(guī)范:(1) 程序設(shè)計規(guī)范1引用同一ropi段或相對位置固定的另一ropi段中的符號時,必需是基于pc的符號引用,即用法相對于當(dāng)前pc的偏移量來實現(xiàn)跳轉(zhuǎn)或舉行常量拜訪。 位置無關(guān)的程序跳轉(zhuǎn)。在arm匯編程序中,用法相對跳轉(zhuǎn)命令b/bl實現(xiàn)程序跳轉(zhuǎn)。命令中所跳轉(zhuǎn)的目標(biāo)地址用基于當(dāng)前pc的偏移量來表示,與鏈接時分配給地址標(biāo)號的肯定地址值無關(guān),因而代碼可以在任何位置舉行跳轉(zhuǎn),實現(xiàn)位置無關(guān)性。另外,還可用法adr或adrl偽命令將地址標(biāo)號值讀取到pc中實現(xiàn)程序跳轉(zhuǎn)。這是由于adr或adrl等偽命令會被編譯器替換為對基于pc的地址值舉行操作,但這種方式所能讀取的地址范圍較小,并且會因地址值是否為字對齊而異。但在arm程序中,用法ldr等命令挺直將地址標(biāo)號值讀
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年風(fēng)電場35kV輸電線路工程合同3篇
- 2024建筑材料多孔磚買賣協(xié)議版B版
- 2024年運(yùn)輸合同物流金融產(chǎn)品設(shè)計與風(fēng)險管理3篇
- 中考英語-英語-任務(wù)型閱讀理解專題練習(xí)(附答案)
- 2025年度土地承包經(jīng)營權(quán)終止合同范本3篇
- 2025年度安全生產(chǎn)信息化系統(tǒng)設(shè)計與實施協(xié)議2篇
- 2025年度物流保險采購合同執(zhí)行細(xì)則3篇
- 湖南工藝美術(shù)職業(yè)學(xué)院《化妝品化學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 通化師范學(xué)院《植物生物技術(shù)實驗》2023-2024學(xué)年第一學(xué)期期末試卷
- 重慶醫(yī)科大學(xué)《精細(xì)化學(xué)品分析檢測技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 技術(shù)服務(wù)合同-英文版模板
- 軍營防襲擊應(yīng)急預(yù)案演練
- 北京同仁醫(yī)院全面預(yù)算管理
- 附件1:上海市新增醫(yī)療服務(wù)項目價格申請受理表
- 法定代表人身份證明書-模板
- 反射療法師理論考試復(fù)習(xí)題庫匯總(含答案)
- word版改善就醫(yī)感受提升患者體驗評估操作手冊2023版
- GB/T 43218-2023煤炭測硫儀性能驗收導(dǎo)則
- 可許則許-陳海量居士
- 勘察設(shè)計招標(biāo)評分標(biāo)準(zhǔn)
- 化學(xué)倉應(yīng)急預(yù)案
評論
0/150
提交評論