ARM汇编中栈桢解析

简介: ARM 栈桢

栈帧是什么东西?

1.栈是一种具有后进先出的数据组织方式,也就是说后存放的先取出,先存放的后取出。栈底是第一个进栈的数据所处位置,栈顶是最后一个数据进栈所处的位置。
image.png
image.png

栈帧(stack frame):就是一个函数所使用的那部分栈,所有函数的栈帧串起来就组成了一个完整的栈。栈帧的两个边界分别由fp(r11)和sp(r13)来限定。

栈帧是如何形成的呢? 当栈顶指针 sp小于栈底指针 fp时, 就形成了栈帧。
image.png

栈帧在函数中的使用?

ARM压栈的顺序很是规矩,依次为当前函数指针PC、返回指针LR、栈指针SP、栈基址FP、传入参数个数及指针、本地变量和临时变量。

ARM进行函数内压栈和出栈往往使用如下的语句:

stmfd sp!,{r0-r9, lr} ; 满递减入栈,给寄存器r0-r9,lr压栈,sp不断减4。

ldmfd sp!,{r0-r9, pc} ; 满递减出栈,给寄存器r0-r9出栈,并使程序跳转回函数的调用点,sp不断增4。

相关文章
|
5月前
|
前端开发 rax Java
从汇编底层全面解析 CAS 的来龙去脉
从汇编底层全面解析 CAS 的来龙去脉
|
5月前
|
存储 机器学习/深度学习 编译器
ARM汇编快速入门
ARM汇编快速入门
146 0
|
7月前
【栈和队列面试题】用栈实现队列(动图解析更清晰)
【栈和队列面试题】用栈实现队列(动图解析更清晰)
|
1天前
|
安全 NoSQL Linux
《ARM汇编与逆向工程 蓝狐卷 基础知识》
《ARM汇编与逆向工程 蓝狐卷 基础知识》
4 0
|
7天前
|
存储
探究汇编中的栈帧和局部变量
探究汇编中的栈帧和局部变量
12 3
|
4月前
|
存储
【深入解析:数据结构栈的魅力与应用】
【深入解析:数据结构栈的魅力与应用】
|
9月前
|
存储
【汇编】用栈传参的案例及分析
【汇编】用栈传参的案例及分析
25 0
|
4月前
|
存储 监控 算法
ARM:CoreSight、ETM、PTM、ITM、HTM、ETB等常用术语解析
ARM:CoreSight、ETM、PTM、ITM、HTM、ETB等常用术语解析
192 0
|
4月前
|
存储 安全
【汇编】在代码段使用数据,在代码段使用栈
【汇编】在代码段使用数据,在代码段使用栈
【汇编】在代码段使用数据,在代码段使用栈
|
4月前
|
存储
【汇编】栈及栈操作的实现
【汇编】栈及栈操作的实现
116 1
【汇编】栈及栈操作的实现

推荐镜像

更多