ARM汇编中栈桢解析

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 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。

相关文章
|
2月前
|
存储 前端开发 JavaScript
深入Web前端:栈与堆的优缺点全解析,让你大开眼界!
【8月更文挑战第23天】本文以问答形式解析了Web前端开发中至关重要的内存管理概念——栈与堆。栈采用后进先出(LIFO)原则存储执行上下文,适用于函数调用管理;而堆则灵活存储如对象和数组等复杂数据类型。栈操作迅速但访问受限,堆则提供动态空间分配但可能牺牲内存效率。理解两者特性有助于提升JavaScript编程技巧。
39 1
|
4月前
|
C语言
程序技术好文:部分ARM汇编指令解读
程序技术好文:部分ARM汇编指令解读
|
4月前
|
Java
Java栈(Stack)深度解析与实现
Java栈(Stack)深度解析与实现
167 1
|
5月前
|
C语言
【汇编语言实战】使用插入排序对给定的数组排序(用栈传递参数)
【汇编语言实战】使用插入排序对给定的数组排序(用栈传递参数)
27 1
|
5月前
|
存储
探究汇编中的栈帧和局部变量
探究汇编中的栈帧和局部变量
38 3
|
5月前
|
编译器
fir原始崩溃栈解析
fir原始崩溃栈解析
24 0
|
5月前
|
安全 NoSQL Linux
《ARM汇编与逆向工程 蓝狐卷 基础知识》
《ARM汇编与逆向工程 蓝狐卷 基础知识》
81 0
|
5月前
|
存储 缓存 安全
JVM之JVM栈的详细解析
JVM之JVM栈的详细解析
44 0
|
5月前
|
存储 安全
【汇编】在代码段使用数据,在代码段使用栈
【汇编】在代码段使用数据,在代码段使用栈
289 0
【汇编】在代码段使用数据,在代码段使用栈
|
5月前
|
存储
【深入解析:数据结构栈的魅力与应用】
【深入解析:数据结构栈的魅力与应用】

推荐镜像

更多
下一篇
无影云桌面