久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > ARM指令中的函數調用

ARM指令中的函數調用

作者: 時間:2016-11-20 來源:網絡 收藏
1. 重要寄存器

SP 棧指針,每一種異常模式都有其自己獨立的r13,它通常指向異常模式所專用的堆棧,也就是說五種異常模式、非異常模式(用戶模式和系統模式),都有各自獨立的堆棧,用不同的堆棧指針來索引。這樣當ARM進入異常模式的時候,程序就可以把一般通用寄存器壓入堆棧,返回時再出棧,保證了各種模式下程序的狀態的完整性

本文引用地址:http://cqxgywz.com/article/201611/318730.htm

LR 鏈接寄存器,一般用來存儲返回地址;在執行BL或BLX等指令時,會自動存儲下一條指令地址,即返回地址

PC 程序計數器,存儲將要執行的指令

2. 程序跳轉

B

BL

BX Rm ;指令集的切換,跳轉到另一指令集的label;

BLX Rm ;將當前指令的下一條指令的地址存儲到LR,然后跳轉到另一指令集的地址處label

--

看到這里,我們需要注意不是所以的函數調用都遵循AAPCS調用方式,相反,部分ARM c編譯器可能強制將返回地址存放在棧上,然后使用B或BX這樣的強制調轉指令進行跳轉。

Note that, in practice, not all function calls follow the AAPCS calling conventions: Instead of transferring the return address to lr register, the ARM C compiler may enforce the return address to be push onto the stack and afterwards performs a direct branch to the function through a B or BX instruction.



關鍵詞: ARM指令函數調

評論


技術專區

關閉