《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 解決方案 > ARM/Thumb之間的函數調用

ARM/Thumb之間的函數調用

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

ARM的狀態寄存器CPSR中的狀態控制位T決定了當前處理器的運行狀態,因此,可通過MSR和MRS指令來直接修改CPSR的狀態位,也能夠改變處理器運行狀態。但由于ARM采用多級流水線的結構,這樣做會造成流水線上預取指令的執行錯誤,而如果用BX指令,則不會出現這樣的問題。

在同一狀態下的子程序調用,由于它不需要狀態的切換,所以其過程相對比較簡單,通常只需一條指令實現調用:

BL          function

實現返回也只需從LR恢復PC即可:

MOV      PC,LR


在不同狀態下的子程序調用中,就需要進行狀態之間的切換,所以其過程相對復雜一些,需要考慮到以下幾點:

需要由BX來切換狀態,因為BL不能完全成狀態切換。

需要在BX之前先保存好LR,BX不能自動保存返回地址到LR。

需要用“BX  LR”來返回,不能使用“MOV         PC,LR”,返回時要仔細考慮保存在LR中最低位的內容是否正確。


在這里需要注意的是:

函數func1()和func2()位于2個不同的源文件中。

在圖中,func1()使用BL指令調用func2(),而返回時直接使用“BX          LR”。這是因為當執行BL指令對LR進行保存時,其最低位會被自動設置,以滿足返回時狀態切換的需要。

編譯時必須告訴編譯器和鏈接器足夠的信息,一方面讓編譯器能夠使用正確的指令碼進行編譯;另一方面,當在不同的狀態之間發生函數調用時,鏈接器插入一段鏈接代碼來實現狀態轉換。


本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 天堂网中文字幕| 中文日韩亚洲欧美制服| 精品视频无码一区二区三区| 国产chinasex对白videos麻豆| 日本黄色片在线播放| 国产性夜夜夜春夜夜爽| 久久久久亚洲AV成人片| 四虎永久精品免费网址大全| 在线播放日本爽快片| 欧美在线视频二区| 黄色a视频在线观看| 久久精品视频一区| 又爽又黄又无遮挡的视频在线观看| 国产精品成人va在线观看入口| 故意短裙公车被强好爽在线播放| 秋霞鲁丝片无码av| 91亚洲精品视频| 久久人人爽人人爽人人片AV高清| 十九岁日本电影免费完整版观看| 国产精品一区二区综合| 天干天干天啪啪夜爽爽AV| 日韩影视在线观看| 色一情一乱一伦一视频免费看| 丰满多毛的大隂户毛茸茸| 亚洲av午夜成人片| 国产99久久九九精品无码| 国色天香精品一卡2卡3卡| 妞干网在线观看| 最好看免费中文字幕2019| 精品香蕉一区二区三区| 9i9精品国产免费久久| 亚洲av无码专区在线观看下载| 亚洲伊人久久网| 国产亚洲av综合人人澡精品| 成人a一级试看片| 欧美成人免费全部网站| 黄色一级毛片免费看| 视频二区好吊色永久视频| 中文字幕永久在线观看| 免费人妻无码不卡中文字幕18禁| 国产精品成人无码免费|