版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
嵌入式系統(tǒng)及應(yīng)用1第九章
ARMC/C++編譯器C/C++編譯器概述編譯器命令行格式pragmas和特定關(guān)鍵字?jǐn)?shù)據(jù)類型和預(yù)定義宏C/C++庫2C/C++編譯器概述編譯器和語言庫搜索路徑3編譯器和語言庫編譯器名稱編譯器種類源文件類型源文件后綴目標(biāo)文件類型armccCC*.C32位ARM代碼tccCC*.C16位Thumb代碼armcppC++C/C++*.C/*.CPP32位ARM代碼tcppC++C/C++*.C/*.CPP16位Thumb代碼4編譯器和語言庫文件類型*.c:C編譯器源文件*.c,*.cp,*.cpp,*.c++,*.cc:C++編譯器源文件*.h:頭文件*.s:ARM匯編代碼源文件*.o:ELF格式目標(biāo)文件(含DRAWF2調(diào)試信息)*.lst:錯(cuò)誤和告警信息列表文件5編譯器和語言庫ARMC語言庫RogueWaveC++庫支持庫對于不同ATPCS有相對應(yīng)的語言庫支持6搜索路徑內(nèi)存中的ANSIC語言庫的頭文件系統(tǒng)當(dāng)前路徑(BerkeleyUnix規(guī)則)ARMINC環(huán)境變量指定搜索路徑7編譯器命令行格式過程調(diào)用標(biāo)準(zhǔn)源程序語言類型搜索路徑輸出文件類型目標(biāo)處理器和ARM體系版本調(diào)試信息和代碼生成控制告警和錯(cuò)誤信息控制8編譯器命令行格式compiler[PCS-options][source-language][search-paths][preprocessor-options][output-format][target-options][debug-options][code-generation-option][warning-options][additional-checks][error-options][source]armcc-viapar
source.c-errorserrorfile9過程調(diào)用標(biāo)準(zhǔn)-apcs/noswst/nointer/noropi/norwpi-fpu
softvfp與interwork相關(guān)的qualifiers-interwork/-nointerwork與位置無關(guān)特性相關(guān)的qualifiers-ropi/-noropi-rwpi/-norwpi與數(shù)據(jù)棧檢查相關(guān)的qualifiers-swstackcheck/-noswstackcheck10源程序語言類型-ansi-ansic-cpp-embeddedcplusplus-strict11搜索路徑-I-fk-fd-j12輸出文件類型-c-list-ofile-S13目標(biāo)處理器和ARM體系版本-cpuname-cpuARM940T-cpu4T-fpuname-fpunone-fpu
vfp-fpu
softfpa14調(diào)試信息和代碼生成控制調(diào)試信息控制-g[option]-dwarf2代碼生成控制代碼優(yōu)化編譯選項(xiàng)代碼段、數(shù)據(jù)段的編譯選項(xiàng)內(nèi)存模式編譯選項(xiàng)對齊模式編譯選項(xiàng)15告警信息和錯(cuò)誤信息控制告警信息控制-W[options]+[options]一般情況下應(yīng)更改程序而不是關(guān)閉告警信息錯(cuò)誤信息控制-E[options]+[options]一般情況下應(yīng)更改程序而不是關(guān)閉錯(cuò)誤信息16pragmas和關(guān)鍵字pragmas聲明函數(shù)的關(guān)鍵字聲明變量的關(guān)鍵字限定數(shù)據(jù)類型的關(guān)鍵字17pragma格式check_printf_format,check_scanf_format,debug,Ospace,Otime,Onum,stack_check,softfp_linkage,import-pragmafeature-name設(shè)置特性-pragma
no_feature-name取消特性舉例
#pragma
check_printf_formats
externvoidmyprintf(constchar*,...)
#pragma
no_check_printf_formats18聲明函數(shù)的關(guān)鍵字__asm__inline__irq__pure__softfp__swi__swi_indirect__value_in_regs__weak19聲明變量的關(guān)鍵字register_int64_global_reg20聲明變量的關(guān)鍵字_align(8)_packed_volatile_weak21數(shù)據(jù)類型和預(yù)定義宏基本數(shù)據(jù)類型預(yù)定義宏22基本數(shù)據(jù)類型數(shù)據(jù)類型長度(位)對其特性char81字節(jié)對齊short162半字對齊int324字節(jié)對齊long324字節(jié)對齊longlong644字節(jié)對齊float324字節(jié)對齊double644字節(jié)對齊longdouble644字節(jié)對齊allpointer324字節(jié)對齊bool324字節(jié)對齊23預(yù)定義宏見P321編程
#ifdef
MACRO_NAME
...
#else
...
#endif24C/C++庫C/C++運(yùn)行時(shí)庫概述建立包含運(yùn)行時(shí)庫的應(yīng)用程序建立不包含運(yùn)行時(shí)庫的應(yīng)用程序裁減C/C++運(yùn)行時(shí)庫25C/C++運(yùn)行時(shí)庫概述C運(yùn)行時(shí)庫ISOC語言庫標(biāo)準(zhǔn)中定義的函數(shù)運(yùn)行于semihosting、與目標(biāo)系統(tǒng)相關(guān)的函數(shù)C/C++編譯器需要的支持函數(shù)C++運(yùn)行時(shí)庫RogueWave標(biāo)準(zhǔn)C++庫C++編譯器的支持函數(shù)其它C++庫26C/C++運(yùn)行時(shí)庫概述運(yùn)行時(shí)庫選擇內(nèi)存模式:bigendianorlittel
endian浮點(diǎn)運(yùn)算類型數(shù)據(jù)棧溢出檢查代碼位置無關(guān)特性存放位置intall\lib\armlibintall\lib\cpplib27C/C++運(yùn)行時(shí)庫概述可重入性使用位置相關(guān)尋址方式的靜態(tài)數(shù)據(jù)的函數(shù)是不可重入的使用位置無關(guān)尋址方式的靜態(tài)數(shù)據(jù)的函數(shù)是可重入的重入規(guī)則28C/C++運(yùn)行時(shí)庫概述注意事項(xiàng)C運(yùn)行時(shí)庫以二進(jìn)制提供編譯自己的C運(yùn)行時(shí)庫重新實(shí)現(xiàn)部分函數(shù)實(shí)現(xiàn)C運(yùn)行時(shí)庫移植C++運(yùn)行時(shí)庫不是免費(fèi)的29建立包含運(yùn)行時(shí)庫的應(yīng)用程序建立C/C++應(yīng)用程序運(yùn)行環(huán)境建立數(shù)據(jù)棧建立數(shù)據(jù)堆初始化運(yùn)行時(shí)庫運(yùn)行main()函數(shù)提供堆ISOC標(biāo)準(zhǔn)規(guī)定的函數(shù)捕捉運(yùn)行時(shí)錯(cuò)誤信息30建立包含運(yùn)行時(shí)庫的應(yīng)用程序在semihost環(huán)境下使用C/C++運(yùn)行時(shí)庫在無主機(jī)支持環(huán)境下使用C/C++運(yùn)行時(shí)庫不使用main()函數(shù)和不初始化運(yùn)行時(shí)庫環(huán)境下使用運(yùn)行庫環(huán)境31semihosted下使用運(yùn)行時(shí)庫ARM使用SWI軟件中斷方式提供支持使用ARM標(biāo)準(zhǔn)semihostingSWI建立自己的semihostingSWI中斷處理函數(shù)semihosting函數(shù)是可以被重新實(shí)現(xiàn)的32semihosted下使用運(yùn)行時(shí)庫ARM工具對semihosting的支持ARMulator提供semihostingSWI支持Angel調(diào)試監(jiān)視器提供semihostingSWI支持Multi-ICE/EmbeddedICE提供semihostingSWI支持33semihosted下使用運(yùn)行時(shí)庫去除semihosting支持刪除semihosting函數(shù)調(diào)用重新實(shí)現(xiàn)semihosting函數(shù)實(shí)現(xiàn)SWI中斷處理程序34nonsemihosted下使用運(yùn)行時(shí)庫在無semihosting支持環(huán)境下不能調(diào)用包含semihosting功能的函數(shù)在無semihosting支持環(huán)境下使用運(yùn)行時(shí)庫建立與目標(biāo)環(huán)境相關(guān)的函數(shù)實(shí)現(xiàn)不實(shí)用semihosting功能將新的目標(biāo)文件與應(yīng)用程序連接更新配置建立適應(yīng)目標(biāo)環(huán)境的應(yīng)用系統(tǒng)35nonsemihosted下使用運(yùn)行時(shí)庫重新實(shí)現(xiàn)semihosting功能函數(shù)和目標(biāo)環(huán)境相關(guān)函數(shù)以提供給C運(yùn)行時(shí)庫使用表10.8列舉了直接依賴semihosting功能的函數(shù);表10.9列舉了間接依賴semihosting功能的函數(shù);36建立不包含運(yùn)行時(shí)庫的應(yīng)用程序若不包含main()函數(shù)則不會對C運(yùn)行時(shí)庫進(jìn)行初始化,稱為裸機(jī)C程序:不支持?jǐn)?shù)據(jù)棧檢查不支持stdio不支持signal()和raise()不支持atexit()和alloca()重新實(shí)現(xiàn)__rt_raise()已便被錯(cuò)誤處理代碼使用編寫匯編代碼實(shí)現(xiàn)C程序運(yùn)行環(huán)境初始化,并保證代碼在C程序前運(yùn)行37建立不包含運(yùn)行時(shí)庫的應(yīng)用程序重新實(shí)現(xiàn)部分函數(shù)以使用C運(yùn)行時(shí)庫實(shí)現(xiàn)__rt_raise()獲取除法、結(jié)構(gòu)數(shù)據(jù)復(fù)制和浮點(diǎn)數(shù)算術(shù)運(yùn)算支持顯示調(diào)用set_local()獲取與地域相關(guān)函數(shù)支持,比如atoi(),sprintf(),sscanf()實(shí)現(xiàn)_fp_init()獲取浮點(diǎn)運(yùn)算實(shí)現(xiàn)fputc()和ferror()實(shí)現(xiàn)低級輸出支持,實(shí)現(xiàn)fgetc()和__backspace()實(shí)現(xiàn)低級輸入支持;38裁減C/C++運(yùn)行時(shí)庫C/C++運(yùn)行時(shí)庫入口點(diǎn):__main()將nonroot執(zhí)行代碼域復(fù)制到運(yùn)行地址空間將
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《GBT 29549.3-2013海上石油固定平臺模塊鉆機(jī) 第3部分:海上安裝、調(diào)試與驗(yàn)收》專題研究報(bào)告
- 《GB-T 24480-2009電梯層門耐火試驗(yàn)》專題研究報(bào)告
- 2026年廣西科技職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫及完整答案詳解1套
- 運(yùn)維流程梳理服務(wù)合同
- 2026年教師培訓(xùn)計(jì)劃方案五篇
- 鐘表行業(yè)鐘表電商運(yùn)營主管崗位招聘考試試卷及答案
- 安全部門主管2025年度工作總結(jié)及2026年度工作計(jì)劃
- 2025二級建造師建筑實(shí)務(wù)模擬練習(xí)卷含答案
- 2022年勞動(dòng)保障協(xié)管員筆試面試題題庫含答案
- 高尿酸飲食控制建議
- 《儲能電站技術(shù)監(jiān)督導(dǎo)則》2580
- 保安人員安全知識培訓(xùn)內(nèi)容
- 垃圾池維修合同范例
- DB31∕T 310001-2020 船舶水污染物內(nèi)河接收設(shè)施配置規(guī)范
- 北京市西城區(qū)2023-2024學(xué)年六年級上學(xué)期語文期末試卷(含答案)
- DB11T 850-2011 建筑墻體用膩?zhàn)討?yīng)用技術(shù)規(guī)程
- 城市軌道交通列車自動(dòng)控制系統(tǒng)維護(hù) 課件 3.1 ZC系統(tǒng)認(rèn)知
- 2024年天津市南開區(qū)翔宇學(xué)校四上數(shù)學(xué)期末檢測模擬試題含解析
- LNG加氣站管道工程施工方案
- 油漆作業(yè)風(fēng)險(xiǎn)和隱患辨識、評估分級與控制措施一覽表
- NB/T 11440-2023生產(chǎn)煤礦儲量估算規(guī)范
評論
0/150
提交評論