《電子技術應用》
您所在的位置:首頁 > 嵌入式技术 > 解决方案 > 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。
主站蜘蛛池模板: av在线com| 欧美极品欧美精品欧美视频| 久久久免费在线观看| 狠狠色综合欧美激情| 日韩中文字幕第一页| 久久免费视频观看| 国产成人综合精品| 国产99久久久欧美黑人| 欧美日韩视频免费| 亚洲人成网站在线观看播放| 国产精品成av人在线视午夜片| 精品视频一区在线| 内射国产内射夫妻免费频道| 午夜一区二区三区| 国产精品夫妻激情| 国产精品久久久久久久久久免费 | 久久精品在线视频| 日韩在线一级片| 亚洲 国产 日韩 综合一区| av在线播放亚洲| 国产不卡av在线| 97精品视频在线播放| 国产成人精品999| 国产精品吹潮在线观看| 国产精品美女www| 国产成人精品免高潮在线观看| 国产精品视频免费观看| 国产精品999999| 真实国产乱子伦对白视频| 亚洲自拍欧美另类| 亚洲爆乳无码专区| 午夜精品99久久免费| 午夜久久资源| 日本一区二区三区四区在线观看| 日本黄网免费一区二区精品| 欧美精品国产精品久久久| 蜜臀久久99精品久久久酒店新书| 久久五月天色综合| 日本亚洲欧洲色α| 国产精品一区二区你懂得| 国产精品久久久久久久久电影网|