您的位置 首页 新品

ARM指令中的函数调用

1.重要寄存器SP栈指针,每一种异常模式都有其自己独立的r13,它通常指向异常模式所专用的堆栈,也就是说五种异常模式、非异常模式(用…

1. 重要寄存器

SP 栈指针,每一种反常形式都有其自己独立的r13,它一般指向反常形式所专用的仓库,也就是说五种反常形式、非反常形式(用户形式和体系形式),都有各自独立的仓库,用不同的仓库指针来索引。这样当ARM进入反常形式的时分,程序就可以把一般通用寄存器压入仓库,回来时再出栈,确保了各种形式下程序的状况的完整性

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.

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/263989.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部