ARM架构--栈

栈的概念

栈的本质就是一段内存,程序运行时用于保存一些临时数据

如局部变量、函数的参数、返回值、以及程序跳转时需要保护的寄存器等

在高级语言里面,操作的是变量。在ARM汇编里面,操作的是寄存器(register)、内存和栈(stack)。

堆 需要用户通过malloc去申请和释放

栈 是靠编译器进行维护

栈的分类

增栈:压栈时栈指针越来越大,出栈时栈指针越来越小

减栈:压栈时栈指针越来越大,出栈时栈指针越来越小

满栈:栈指针指向最后一次压入到栈中的数据,压栈时需要先移动栈指针到相邻位置然后再压栈

空栈:栈指针指向最后一次压入到栈中的数据的相邻位置,压栈时可直接压栈,之后需要将栈指针移动到相邻位置

栈分为空增(EA)、空减(ED)、满增(FA)、满减(FD)四种

ARM处理器一般使用满减栈从高地址往低地址存 STMDB指令存储****使用LDMIA读取

压栈和出栈的本质就是读写内存

或者

栈的使用实例-----子函数的调用过程(叶子函数)

因此 ,C语言中的子函数 汇编后一般都是压栈保护现场,结束时再进行出栈

栈的使用实例-----子函数的调用过程(非叶子函数)

联系C语言:

局部变量存在于栈中,如果不初始化的话是一个随机值

全局变量不初始化则为0,因为编译器会把他存放在BSS段,会把他全部清零

相关推荐
gAlAxy...6 小时前
SpringMVC 框架从入门到实践:架构解析与案例实现
架构
ALex_zry12 小时前
Docker Compose运维技术实战分享:从安装到架构解析
运维·docker·架构
不爱吃糖的程序媛16 小时前
华为 CANN:昇腾 AI 的异构计算架构核心与开源生态解析
人工智能·华为·架构
晚霞的不甘16 小时前
升腾异构计算架构 CANN 详解:从底层到应用的全栈解析
架构
转转技术团队21 小时前
回收系统架构演进实战:与Cursor结对扫清系统混沌
java·架构·cursor
稚辉君.MCA_P8_Java21 小时前
通义 插入排序(Insertion Sort)
数据结构·后端·算法·架构·排序算法
用户9949481198251 天前
拒绝“人工智障”:618大促背后的 MateChat 智能导购架构演进与性能极致优化
架构
用户9949481198251 天前
定义未来的交互:基于 MateChat 实现 NL2UI(自然语言生成界面)的架构探索
架构
蓝瑟忧伤1 天前
前端性能体系的全面升级:现代 Web 如何构建可量化、可治理、可演进的性能架构?
前端·架构
语落心生1 天前
探秘新一代向量存储格式Lance-format (二十八) 性能优化技巧
架构