ARM架构--栈

栈的概念

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

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

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

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

栈 是靠编译器进行维护

栈的分类

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

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

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

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

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

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

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

或者

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

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

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

联系C语言:

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

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

相关推荐
喵叔哟1 小时前
1. 【.NET Aspire 从入门到实战】--理论入门与环境搭建--引言
微服务·云原生·架构
CodeLinghu1 小时前
Agentic Automation:基于Agent的企业认知架构重构与数字化转型跃迁---我的AI经典战例
人工智能·重构·架构
zfj3214 小时前
学技术学英文:elasticsearch部署架构-容错设计
elasticsearch·架构·全文检索·容错
Fonzoal7 小时前
Xv6 手册:陷阱与系统调用
架构
Charlie__ZS10 小时前
微服务-配置管理
微服务·云原生·架构
车载诊断技术11 小时前
基于新一代电子电器架构的SOA服务设计方法
人工智能·架构·汽车·计算机外设·ecu故障诊断指南
奥顺互联V12 小时前
yes镜像站群/PHP驱动的镜像站群架构实践
开发语言·架构·开源·php
优人ovo17 小时前
详解Kafka并行计算架构
分布式·架构·kafka
EchoToMe1 天前
电信传输基本理论/5G网络层次架构——超三万字详解:适用期末考试/考研/工作
网络·5g·架构
好记性+烂笔头1 天前
3 Flink 运行架构
大数据·架构·flink