《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 解決方案 > C語言與匯編語言混合編程

C語言與匯編語言混合編程

2017-06-22
關鍵詞: 匯編語言

在嵌入式程序設計中,C語言編程和ARM匯編語言編程都是必需的,在某些情況下,在某些情況下,還需要C語言與匯編語言的混合編程。靈活地運用C語言和匯編語言之間的關系進行嵌入式編程有利于對嵌入式以及相關模塊的編程開發。在需要C語言和匯編語言混合編程時,如果匯編代碼比較簡單,則可直接利用內嵌匯編倆進行混合編程。如果匯編代碼比較復雜,則可將匯編語言比較簡單,則可直接分別以文件的形式加到一個工程里,通過ATPCS來完成匯編語言程序與C語言程序之間的調用。

1.ATPCS介紹

ATPCS是ARM程序和Thumb程序中子程序調用的基本規則,目的是為了使單獨編譯的C語言程序和匯編語言程序之間能夠相互調用。這些基本規則包括子程序調用過程中寄存器的使用規則、數據棧的使用規則和參數的傳遞規則。

1.       寄存器的使用規則

寄存器的使用必須滿足下面的規則:

子程序間通過寄存器R0~R3來傳遞參數,這時,寄存器R0~R3可記作A1~A4.被調用的子程序在返回前無須恢復寄存器R0~R3的內容。

在子程序中,使用寄存器R4~R11來保存局部變量。這時,寄存器R4~R11可記作V1~V8。如果在子程序中使用了寄存器V1~V8中的某些寄存器,則子程序進入時都必須保存這些寄存器的值,在返回前必須恢復這些寄存器的值;對于子程序中沒有用到的寄存器,則不必進行這些操作。在Thumb程序中,通常只有使用寄存器R4~R7來保存局部變量。

寄存器R12用作子程序間的scatch寄存器,記作IP。在子程序間的鏈接代碼段中常有這種使用規則。

寄存器R13用作數據棧指針,記作SP。在子程序中寄存器R13不能用作其他用途。寄存器SP在進入子程序時的值和退出子程序時的值必須相等。

寄存器R14稱為鏈接寄存器,記作LR。它用作保存子程序的返回地址。如果在子程序中保存了返回地址,則寄存器R14可用作其他用途。

寄存器R15是程序計數器,記作PC。它不能用作其他用途。



本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 成年女人毛片免费播放视频m| 交换韩国伦理片| 亚洲性图第一页| 国产性夜夜春夜夜爽三级| 新人本田岬847正在播放| 你懂的在线播放| 亚洲欧美7777| 把水管开水放b里是什么感觉| 亚洲视频在线观看不卡| 日本特黄特色特爽大片老鸭| 手机看片福利在线| 亚洲伊人色一综合网| 色婷婷亚洲十月十月色天| 日韩精品免费视频| 又粗又大又爽又长又紧又水| 99久久久国产精品免费牛牛四川| 最近中文字幕mv免费视频| 午夜精品久久久内射近拍高清 | 精品日产卡一卡乱码| 国语自产拍天天在线| 久久老子午夜精品无码怎么打 | 亚洲免费一级片| 狼友av永久网站免费观看| 国产福利免费视频| 中文字幕视频在线免费观看| 海角社区hjb09| 国产在线xvideos| h视频免费观看| 最刺激黄a大片免费网站| 内射干少妇亚洲69xxx| 性满足久久久久久久久| 夜夜春宵伴娇全文阅读| 久久综合九色综合91| 福利一区二区三区视频在线观看| 国产精品v片在线观看不卡| 中文字幕日本精品一区二区三区| 杨玉环三级dvd| 公天天吃我奶躁我的在线观看| 青青青青青国产免费手机看视频| 大量精子注入波多野结衣| 久久精品国产清自在天天线|