组合语言的与C语言的混合编译实验课件.pptVIP

组合语言的与C语言的混合编译实验课件.ppt

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
组合语言的与C语言的混合编译实验课件

* * 組合語言與C語言的混合編譯實驗 實驗目的: 掌握ARM C語言編譯 掌握ARM 組合語言與C語言的混合編譯 實驗內容: 用組合語言實驗LED燈的閃爍 實驗設備: DMA2440XP教學平台 ADS 1.2 試用版內建開發環境和除錯軟體 USB連接線、串列連接線、電源 1.1 ARM程式呼叫ATPCS(ARM) ARM編譯中不同語言的程式只要遵守ATPCS規則就可實現不同語言間的互相呼叫。ATPCS是一系列用於規定應用程式之間互相呼叫的基本規則,這個規則包括: 支援資料限制檢查 支援唯讀位置無關(ROPI) 支援可讀/寫段位置無關(RWPI) 支援ARM程式和Thumb程式的混合使用 處理浮點運算 使用以上規定的ATPCS規則時,應用程式必須遵守如下: 程式編寫遵守ATPCS 變數傳遞以中間暫存器和資料完成 組合語言器使用-apcs開關選項 關於其他ATPCS規則,用戶可以參考ARM處理器相關書籍或登錄ARM公司網站。 1.2 組合語言與C語言的互相呼叫 組合語言切換到C語言的方法 C語言中定義的函數名在組合語言中可作為標籤使用,因此,在組合語言中可使用程式分支指令直接轉移到C語言中定義的標籤(函數)中。下面程式實現從組合語言跳躍到C語言的Main函數中。 組合語言程式: 組合語言中函數的實現 程式只要遵守ATPCS相對應規則,就可以使用不同的程式編寫程式。程式間的互相呼叫最主要的是解決參數傳遞問題。應用程式之間使用中間暫存器及資料暫存器來傳遞參數,其中,第一個到第四個參數使用R0-R3,多於四個參數的使用資料暫存器進行傳遞。這樣,接收參數的應用程式必須知道參數的個數。但是,在應用程式被呼叫時,一般無從知道所傳遞參數的個數。不同語言編寫的應用程式在呼叫時可以自定義參數傳遞的約定,使用具有一定意義的形式來傳遞,可以很好地解決參數個數的問題。常用的方法是把第一個或最後一個參數作為參數個數(包括個數本身)傳遞給應用程式。 下面的程式就是用組合語言寫的一個簡單函數: 上面的組合語言函數相當於如下聲明的C語言函數: int asse_add(int x, int y); 在組合語言中可以使用: BL asse_add 指令呼叫該函數。輸入時,r0為x參數,r1為y參數;輸出r0。該函數實現的功能很簡單,返回參數x與y的和。 C語言呼叫組合語言檔的函數 以上面的asse_add函數為例,在C語言中聲明該函數在其他檔中實現: extern int asse_add(int x, int y); 然後就可像呼叫C函數一樣呼叫該函數: x = asse_add(10,20)。 C語言中內嵌組合語言 ARM的編譯器支援內嵌組合語言。如下示例為C語言中採用內嵌組合語言的方式實現asse_add相同的功能: 1.3 實驗步驟 新建一個工程名為ASM_c,並新建原始檔案、輸入程式,設置好工程編譯產生映像檔。 硬體連接:用串列線將PC的COM1與實驗箱的UART1連起來,再用USB連接 線(A-B)將PC的USB HOST介面與實驗箱的USB Device介面連起來,最後插上12V電源。 下載、除錯並執行:該步驟操作過程與手冊5-3.2小節的步驟是類似的。 結合實驗內容和原理,觀察實驗現象,實驗結果應該是D2燈不停的閃爍。 完成實驗練習題。 1.4 應用程式編譯 參考程式碼 組合語言參考程式init.s如下: 上面是關於該實驗涉及到的部分函數,完整的程式請看光碟目錄的demo檔案夾下相對應實驗的工程目錄。 1.5 實驗過程 在進行NOR FLASH燒寫的時候,先要用20PIN的排線將實驗箱的20PINJTAG頭與JTAG小板的JP2介面座相連,同時串列埠線,USB線連接上,程式執行後,你會看到LED2不停的閃爍。 * * * * * * * * * * * * * * * * * * * *

文档评论(0)

189****6821 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档