![DSP系統(tǒng)中C語言和匯編語言的混合編程_第1頁](http://file3.renrendoc.com/fileroot3/2021-12/2/dc9a70eb-ea1b-4b17-b9fb-a2346ca8e9d6/dc9a70eb-ea1b-4b17-b9fb-a2346ca8e9d61.gif)
![DSP系統(tǒng)中C語言和匯編語言的混合編程_第2頁](http://file3.renrendoc.com/fileroot3/2021-12/2/dc9a70eb-ea1b-4b17-b9fb-a2346ca8e9d6/dc9a70eb-ea1b-4b17-b9fb-a2346ca8e9d62.gif)
![DSP系統(tǒng)中C語言和匯編語言的混合編程_第3頁](http://file3.renrendoc.com/fileroot3/2021-12/2/dc9a70eb-ea1b-4b17-b9fb-a2346ca8e9d6/dc9a70eb-ea1b-4b17-b9fb-a2346ca8e9d63.gif)
![DSP系統(tǒng)中C語言和匯編語言的混合編程_第4頁](http://file3.renrendoc.com/fileroot3/2021-12/2/dc9a70eb-ea1b-4b17-b9fb-a2346ca8e9d6/dc9a70eb-ea1b-4b17-b9fb-a2346ca8e9d64.gif)
![DSP系統(tǒng)中C語言和匯編語言的混合編程_第5頁](http://file3.renrendoc.com/fileroot3/2021-12/2/dc9a70eb-ea1b-4b17-b9fb-a2346ca8e9d6/dc9a70eb-ea1b-4b17-b9fb-a2346ca8e9d65.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、c語言和匯編語言的混合編程匯編語言編程優(yōu)點(diǎn):可以充分地控制處理器的功能,為人匸映射算法 構(gòu)成最有效的程序缺點(diǎn):編碼效率低、可維護(hù)性和移植能力差 c/c+語言編程優(yōu)點(diǎn):編碼效率高、可維護(hù)性和移植性好缺點(diǎn):速度慢、存儲器利用效率低混合編程以tms320c2x/c2xx/c5x的c編譯器為例!c講雷的心儲器:to言的審菇規(guī)則 3ci?f冷的函數(shù)調(diào)用規(guī)則4c9a編誥占的接lc卅舌匚匕“今 1 c語言的存儲器模型c編譯器產(chǎn)生的段段名稱段內(nèi)容儲器類型已初始化 段.text可執(zhí)行代砒和浮點(diǎn)常數(shù)rom或ram0cinit已初始化的全局變st和祁態(tài)變就 的列衣rom或ram0switch用多開關(guān)說的的跳轉(zhuǎn)列衣r
2、om或ram0.const已初始化的7符申、全和rom戒ram1聽段.bss謝和矗態(tài)變量ram1.stack軟件堆棧ram1.system動態(tài)存儲空何ram1 c系統(tǒng)堆棧(軟件堆棧)堆棧的作用:分配対部變駁向除數(shù)傳通參數(shù)保隋數(shù)的更何地川保處艸;b的狀態(tài)??偙W邪r儲處堆棧的大小戲認(rèn)人小為1x76h&時呵用-etack see a 4大小器.ttics沒fhwmut港出的用4冊出會磯h廳環(huán)境甘致程序失敗因此箋鋼保存足夠大的空間用ffflk的m堆棧的管理廉段從低地址向島地址堆長ari:mnmttsp).sp指針指向堆幔的卜 個可訪軻單元-aro:結(jié)構(gòu)(frame)指計(fp)指向十館結(jié)構(gòu)的
3、開始處.附數(shù) 調(diào)用時函數(shù)的會it梅頂創(chuàng)it個新的frame動態(tài)存儲空間(.system段)用f運(yùn)行時為變吊動態(tài)分配 嶄器malloc、calloc. realloc free總址采用間接尋址來訪何即用指針來訪問默認(rèn)大小為你字鏈接時可用-heap size改變?nèi)诵?c語言的寄存器規(guī)則寄存器使用、保存規(guī)定編譯器如何使用寄荷器函數(shù)調(diào)用時如何保護(hù)寄存器值用處被調(diào)除數(shù)保護(hù)ar0結(jié)構(gòu)折什yesar1堆棧指針yesar2対部變斌指針noar2*ar5農(nóng)達(dá)式分析noar6-ar7寄器變ftyesacc累加器表達(dá)式分析鹿回值nop表達(dá)式分析not表達(dá)式分析no:旳jt狀態(tài)位域保留值是在進(jìn)入一個曲數(shù)或從一個曲數(shù)返
4、回時譯器期望的該位域的值短橫線表示編譯器不期型一個待定的值被修改欄農(nóng)明編詳器代碼產(chǎn)住器是否曾修改該位域域名稱保割值被修改arp輔助寄“器指針1yesc進(jìn)位位yesdp數(shù)據(jù)頁yes0v溢出位一yesovm溢出模式0nopm乘枳移位模式0nosxm符號擴(kuò)展模式y(tǒng)estc測試位yes號亡畚匯今wt繪“jm;? 堆棧指針.結(jié)構(gòu)指針和局部變量指針 堆棧指針sp ar1堆戰(zhàn)折針sp指向堆棧的f-個可訪問單尤堆棧從低地址向島地址増長結(jié)構(gòu)(frame)指針fp為 個幣敵耍求財部“儲時(如隔解費(fèi)岳 暫存單尤)它將 加i棧中的様作空何(局郁結(jié)恂).該hlvi構(gòu)在函b進(jìn)入時在h棧中建工分配任腐數(shù)返何時樣放分配aro
5、結(jié)構(gòu)1hifp折向紹構(gòu)的”處處fp指向的前部結(jié)構(gòu)的第一個單尤被用作和時“儲m兀.以允許 寄存器z何的8uk傳輸h對jc函數(shù)的匝入足必須的局冊變鼠指針lvp ar2局部變量折針lvp所冇存儲在耐部糾構(gòu)中的對象.包括參數(shù)都通過lvp進(jìn)行間 接訪網(wǎng)寄存ib變量寄存器變試是局部變比位寄存器中(不足存詁器中) 的編譯器的臨時變最編譯器使用這些寄存器變駅的方式取決于是否使用了優(yōu) 化器表達(dá)式分析寄存器表達(dá)式分析寄存器用f計算表達(dá)式的值并保存臨時的結(jié) 果&達(dá)式分析寄存器的內(nèi)樣在被調(diào)旳數(shù)小不被保護(hù) 任何用f臨時”儲的衣達(dá)式分析寄“器任換數(shù)調(diào)用詢被 保存在局部結(jié)構(gòu)中返回值函數(shù)返冋值放在累加器中如何產(chǎn)生函數(shù)
6、調(diào)用個用數(shù)(父曲數(shù))在調(diào)用英它曲數(shù)(獷函數(shù))執(zhí)行以 下任務(wù)注意,arp必須設(shè)為11)父沽數(shù)將參數(shù)以傾倒的順序壓入堆棧 g 右邊聲期的 參數(shù)第-個壓入堆檢 最左邊的參數(shù)最后個爪入堆 棧即垠左邊的參數(shù)莊棧頂2)父函數(shù)調(diào)用f負(fù)數(shù)3)父因數(shù)假定從/曲數(shù)返冋時.arp將被況為1 4)完成調(diào)用后.父叭數(shù)以sbrk n (n是壓入堆棧的參數(shù)個數(shù))將參數(shù)彈出堆棧c詒善如匯墻詒龍的混合場士 -浴才的禺釵調(diào)用出址; 被調(diào)函數(shù)如何相應(yīng)響應(yīng)被調(diào)函數(shù)(f函數(shù))需要完成以下任務(wù) 3c語言的函數(shù)調(diào)用規(guī)則在函數(shù)的入口,arp假定已經(jīng)設(shè)置為41)將返冋地址從硬件堆棧中彈出,并壓入軟件堆棧中2)將原fp壓入軟件堆棧3)分配局部結(jié)
7、構(gòu)4)如果/函數(shù)中修改了ar6和/或ar7,則將它們壓入堆棧,其 它的任何寄存器可能被無保存地修改5)執(zhí)行該函數(shù)的代碼6)將返回值放入累加器7)設(shè)花arp為ar18)如果ar6和/或ar7被保存,則恢復(fù)它們9)釋放局部結(jié)構(gòu)分配10)恢奴原fp11)從軟件堆棧中復(fù)制返回地址并壓入硬件堆棧12)返回父函數(shù)c語言和匯編語言的混合編程c語言的函數(shù)調(diào)用規(guī)則例沁和??c詒玄的瀝合嫡今渚古的圉戟調(diào).附規(guī)貶 被調(diào)函數(shù)的特殊情況y沒有將返回地址移到軟件堆棧屮 如果被調(diào)函數(shù)(子函數(shù))沒有調(diào)用其它函數(shù).或只調(diào)用了一 個運(yùn)行支持函數(shù),乩編訐器知道該函數(shù)不會超過8級深度的調(diào) 用,即不會發(fā)生硬件堆棧的溢出,則就不必將返回地
8、址從硬 件堆棧中彈出,乂壓入軟件堆棧中沒有分配局部結(jié)構(gòu)如果沒有局部變雖 也沒有使用ltlaro (fp)指向的暫時存 儲單尤,則不必分配丿部結(jié)構(gòu)參數(shù)和局部變量的訪問參數(shù)和局部變城通過lvp (ar2)來訪問參數(shù)總是相對于fp的負(fù)偏移螢 局部變量總是相對于fp的正偏移最 4c語言與匯編語言的接口丁獨(dú)立的c和匯編模塊接口在編寫匯編語言時必須遵循有關(guān)的寄存器觀則和調(diào)用規(guī) 則.否則可能會破壞c的運(yùn)行環(huán)境在編耳獨(dú)立的匯編程序時.必須注總以卜兒點(diǎn):無論是c函數(shù)述是ii編函數(shù),都必須遵循寄存器使川視則必須保護(hù)函數(shù)箜用到的兒個專用寄存器,專用寄存器包括:aro (fp) . ar1 (sp)、ar6和ar7:
9、其中.如栗sp正 常使用的話,則不必明確加以保護(hù),即只耍匯編函數(shù)在返冋 時并岀壓入的對象,實(shí)際上就己經(jīng)保護(hù)rsp其它寄存器可以自由使用 如果改變了狀態(tài)位域的假定值.則函數(shù)返回時必須被恢復(fù).arp.必須為1中斷程序必須保護(hù)所有用到的寄存耦 匯編諂/調(diào)用c隨數(shù)時.將參數(shù)以逆序壓入軟件堆棧.換數(shù)1訓(xùn)用拆彈出堆棧調(diào)用c丙數(shù)時,c函數(shù)只保護(hù)兒個&用寄荷器,c函數(shù)可能改變兀它 任何寄存器的內(nèi)容長樓型和浮點(diǎn)數(shù)在存儲器中心放的順序是低位字在低地址,高位字 在高地址如果浙數(shù)冇返冋值則返回值存放在累加器acc中匯編程序不能改變由c產(chǎn)生的.cinit段的內(nèi)容,否則可能會引越不可 預(yù)測的后果編譯器在所有的c標(biāo)
10、識符(函數(shù)名、變最名等)前加下劃線v:im此,在編耳匯編程序時,必須住c聊序要訪問的對象詢加卜呦線 二例如,任c程序中運(yùn)義了變最x在匯編語吉沖便用時為_x:如果僅在兒編語言中便用的標(biāo)識符,則不必加卜劃線任何在沢編用序中定義的對象或函數(shù),如果需嗖在c程序中訪問或 調(diào)用則必須jh.global匯編偽指令世明:同樣.用序中定義的 對彖或函數(shù),如果術(shù)要在匯編程序中訪問或調(diào)用,在匯編程序中也 必須用.global;】編偽指令川明c語言和匯編語言的混合編程c語言與匯編語言的接口例:c程序main函 數(shù)調(diào)用一個匯編函數(shù)asmfunc,asmfunc函數(shù)只有一個參數(shù),該參數(shù)與c中的全局變量gvar相加,返冋該
11、結(jié)果例中可以不必將返冋地址從硬件堆棧移到軟件堆棧中,因為asmfunc函數(shù)沒有進(jìn)行別的調(diào)用在c程序中使用asm語句嵌入單行的匯編語句優(yōu)點(diǎn):簡單,在c程序中可以實(shí)現(xiàn)c語言無法實(shí)現(xiàn)的吃映 件控制功能,如修改中斷控制寄存器、中斷的是能或無效. 讀取狀態(tài)寄存器和中斷標(biāo)志寄”器等缺點(diǎn):容易破壞c壞境因為c編譯器不對嵌入的匯編語句 進(jìn)行檢測和分析注意在c代碼屮嵌入跳轉(zhuǎn)語勺或標(biāo)識符可能會產(chǎn)生無法預(yù)知的結(jié) 果不要改變c變扯的值.但可以安全地讀仟何變秋的當(dāng)前值不要嵌入?yún)R編偽指令,這會破壞匯編諂占環(huán)境c詒喜和忙編詒才的泯合嫡住今i誨與匯塢語書的撻口c在匯編語言中定義變量.變量名前加下劃線二*使用.global聲明為全局變量在c程序中聲明該變量為外部的,并正常地對它訪問在c程序中直接嵌入?yún)R編語句asmasm “;關(guān)中斯w/( eint )八在c代碼中訪問匯編語言變量在c程序中定義全局變雖在匯編語言中使用.global聲明為外部變;乙 變屆名前加 下劃線匚在匯編程序中正常地對變屋訪問int譏main()ldi1x i
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度破產(chǎn)案件財產(chǎn)追償與清算法律服務(wù)合同4篇
- 二零二五年度木地板廢舊回收與再生利用合同
- 二零二五年度企業(yè)團(tuán)隊協(xié)作能力培訓(xùn)合同
- 2025-2030全球殺螟腈行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國手持式UVB光療燈行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球立式圓筒形儲罐行業(yè)調(diào)研及趨勢分析報告
- 船舶內(nèi)部裝修合同終止樣本
- 精密儀器運(yùn)輸合同保障措施
- 醫(yī)療設(shè)備運(yùn)輸保險合同
- 暑期工合同協(xié)議
- 2024年北京東城社區(qū)工作者招聘筆試真題
- 《敏捷項目管理》課件
- 統(tǒng)編版(2024新版)七年級上學(xué)期道德與法治期末綜合測試卷(含答案)
- 黑龍江省哈爾濱市2024屆中考數(shù)學(xué)試卷(含答案)
- 前程無憂測評題庫及答案
- 高三日語一輪復(fù)習(xí)助詞「と」的用法課件
- 物業(yè)管理服務(wù)房屋及公用設(shè)施維修養(yǎng)護(hù)方案
- 五年級上冊小數(shù)遞等式計算200道及答案
- 帶拼音生字本模板(可A4打印)
- 超高大截面框架柱成型質(zhì)量控制
- 森林法講解課件
評論
0/150
提交評論