




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第?次實驗實驗名稱 學號姓名第3次實驗匯編和C語言的相互調用1第1頁共8頁計算機科學技術系上機實踐報告課程名稱:嵌入式系統實踐年級:上機實踐成績:指導教師:姓名:創新實踐成績:上機實踐名稱:匯編和C語言的相互調用學號:上機實踐日期:上機實踐編號:No.3組號:上機實踐時間:實驗目的閱讀EmbestEduKit-III啟動代碼,觀察處理器啟動過程;學會使用EmbestIDE輔助信息窗口來分析判斷調試過程和結果;學會在EmbestIDE環境中編寫、編譯與調試匯編和C語言相互調用的程序。實驗設備硬件:EmbestEDUKIT-III(實驗平臺)PC機軟件:EmbestIDEProARM集成開發環境,Windows98/2000/NT/XP。實驗內容使用匯編完成一個隨機數產生函數,通過C語言調用該函數,產生一系列隨機數,存放到數組里面。C語言的編譯過程C語言程序→匯編語言程序→目標可執行程序匯編語言的函數調用過程參數準備函數返回匯編函數間調用函數調用舉例C語言調用匯編函數匯編語言調用C語言函數命令腳本文件和鏈接腳本文件實驗原理1.ARM過程調用ATPCS(ARM)ATPCS是一系列用于規定應用程序之間相互調用的基本規則,這此規則包括:支持數據棧限制檢查;支持只讀段位置無關(ROPI);支持可讀/寫段位置無關(RWPI);支持ARM程序和Thumb程序的混合使用;處理浮點運算。使用以上規定的ATPCS規則時,應用程序必須遵守如下:程序編寫遵守ATPCS;變量傳遞以中間寄存器和數據棧完成;匯編器使用-apcs開關選項。關于其他ATPCS規則,用戶可以參考ARM處理器相關書籍或登錄ARM公司網站。程序只要遵守ATPCS相應規則,就可以使用不同的源代碼編寫程序。程序間的相互調用最主要的是解決參數傳遞問題。應用程序之間使用中間寄存器及數據棧來傳遞參數,其中,第一個到第四個參數使用R0-R3,多于四個參數的使用數據棧進行傳遞。這樣,接收參數的應用程序必須知道參數的個數。但是,在應用程序被調用時,一般無從知道所傳遞參數的個數。不同語言編寫的應用程序在調用時可以自定義參數傳遞的約定,使用具有一定意義的形式來傳遞,可以很好地解決參數個數的問題。常用的方法是把第一個或最后一個參數作為參數個數(包括個數本身)傳遞給應用程序。ATPCS中寄存器的對應關系如表3-5所列:表3-5ATPCS規則中寄存器列表2.main()函數與__gccmain()當應用程序中包含了main()函數,將會引起對C運行時庫的初始化。該初始化是通過函數__gccmain()實現的,即在main()函數入口處,編譯器會首先調用__gccmain()函數,然后才是執行編寫的代碼。__gccmain()函數在gcc的標準庫里面實現。當應用程序中沒有包含main()函數,將不會引起對C運行時庫的初始化。這時,C運行時庫的很多功能在應用程序中是不能使用的。在基礎實驗的課程里面,我們沒有涉及到函數庫的內容,因此,我們不打算在這里加入函數庫的使用。因此,如果我們使用main函數作為應用程序的主函數,可以在源代碼中加入一個空的__gccmain()函數(用C語言或者匯編語言均可)。圖3-14explasm工程文件設置界面實驗步驟1.考本章其他實驗,創建新的工程,工程名為:explasm;2.按照參考程序,重新編寫源代碼文件并分別保存為randtest.c,init.s,random.s和ldscript,并把它們加入工程里面;3.參照其他基礎實驗操作,按照編譯→匯編器配置→鏈接器配置→調試器配置設置新工程,并編譯、鏈接工程,如圖3-14所示;4.下載調試文件,打開memory/register/watch/variable/callstack窗口,單步執行程序。通過以上窗口,跟蹤程序運行,觀察分析運行結果,通過實驗學會使用EmbestIDE進行應用程序的開發與調試;5.理解和掌握實驗后,完成實驗練習題。6.習題:?編寫一個匯編程序mixop.s–實現函數y=mixop(x1,x2,x3)–y=x1+x2*x3–調用c2.c中的multiply函數?C程序1:c1.c–實現函數voidinit();–作為啟動時的起始地址–在該函數內要調用mixop函數完成6+40*50,結果存放在變量y中。?C程序2:c2.c–實現函數y=multiply(x1,x2)–y=x1*x2?提示:init()函數結尾時,設置死循環調試過程、結果和分析編寫三個函數運行c1.c將常數賦值給r0,r1,r2調用mixop.s保存當前地址將r3的值放入r0將r0*r1的值放入r0R0+r4的結果存入r0總結本次實驗主要是將兩個C函數與一個匯編函數連接,從而實現相互調用。編譯之后調試過程中遇到了一些錯誤,后來發現是程序入口的地址應該和連接腳本寫得一樣,之后調試成功。附件c1.cexternintunsignedmixop(intx1,intx2,intx3);voidinit(){inty;y=mixop(6,40,50);while(1){}}Mixop.s.globalmixop.externmultipy.textmixop:movip,spstmdbsp!,{fp,ip,lr,pc}subfp,ip,#4movr4,r0movr0,r2blmultiplyadd
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年歷史文化遺產保護知識測試試題及答案
- 2025年科學實驗室安全考試試題及答案
- 商務小禮品采購合同協議
- 商業用房購房合同協議
- 和解糾紛協議書范本
- 殘值車輛收購合同協議
- 品牌墻布轉讓合同協議
- 2025原油儲罐清洗服務承包合同
- 商場提點合同協議
- 比賽獎金協議書范本
- 2022集中式電化學儲能電站-施工組織設計方案
- 中國流行音樂 課件-2022-2023學年高中音樂湘教版(2019)必修音樂鑒賞下篇
- 蘋果落地-牛頓的故事課件
- 船舶管路系統專題培訓課件
- 達美樂比薩線上整合營銷規劃方案
- 水泥產品生產許可證實施細則
- 德意志意識形態
- GB/T 14054-1993輻射防護用固定式X、γ輻射劑量率儀、報警裝置和監測儀
- 《馬克思主義發展史》第六章 毛澤東思想是馬克思主義在中國發展的第一個重大成果
- 粵教版地理七年級下冊全冊課件
- 工商企業管理專業模擬實訓報告
評論
0/150
提交評論