《電子技術應用》
您所在的位置:首頁 > 嵌入式技术 > 解决方案 > 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。
主站蜘蛛池模板: 欧美综合激情网| 久久亚洲精品网站| 日韩精品视频久久| 欧美日产一区二区三区在线观看| 视频一区不卡| 欧美久久久精品| 日韩欧美精品久久| 日本一区二区久久精品| 91免费看片网站| 114国产精品久久免费观看| 国产视频99| 91禁国产网站| 欧美激情亚洲另类| 日本欧美国产在线| 国产精国产精品| 久久99久久久久久| 久久久久久综合网天天| 国产精品手机播放| 91免费视频国产| 欧美日韩精品免费看| 日本精品一区| 国产一区二区在线免费视频v| 亚洲欧洲久久| 午夜精品一区二区三区在线播放| 国产一区二区视频免费在线观看| 国产超碰91| 99精品国产高清一区二区| 久久久久国产精品www| 日韩视频在线免费观看| 国产精品av网站| 久久久久久久香蕉| 国产精品av网站| 国产精品美女久久久久av超清| 精品久久久久久无码中文野结衣 | 日产中文字幕在线精品一区| 亚洲综合色av| 国产精品美女免费看| 日韩一区二区精品视频| 一本一道久久久a久久久精品91| 国产精品久久在线观看| 久久久久久久久久久av|