Cortex-M3栈内存操作

151 篇文章 5 订阅 ¥299.90 ¥399.90
本文介绍了Cortex-M3处理器中栈内存的工作原理,包括PUSH和POP指令的使用,堆栈的自动操作特别是在异常处理中的角色。Cortex-M3采用向下生长的满栈模型,同时存在主堆栈MSP和进程堆栈PSP,由CONTROL寄存器的位[1]决定使用哪个。这种双堆栈机制在OS环境下可以保护OS堆栈不被用户程序错误破坏。
摘要由CSDN通过智能技术生成

访问堆栈用堆栈指针,并且PUSH指令和POP指令默认使用SP。


堆栈的PUSH与POP
堆栈是一种存储器的使用模型。它由一块连续的内存和一个栈顶指针组成,用于实现”后进先出“的缓冲区。其最典型的应用,就是在数据处理前先保存寄存器的值,再在处理任务完成后从中恢复先前保护的这些值。
 注:寄存器的PUSH和POP操作永远都是4字节对齐的。原因是:堆栈指针的最低两位永远是0。


栈内存操作
 在Cortex-M3中,除了可以使用PUSH和POP指令来处理堆栈外,内核还会在异常处理的始末自动PUSH和POP操作。
 堆栈的基本操作
 堆栈的功能就是把寄存器的数据临时备份在内存中,以便将来能恢复之——在一个任务或一段子程序执行完毕后恢复。

.....(主程序)
; R0, R1=Y, R2=Z
BL   Fx1
                  Fx1
                    PUSH {
  R0}   ;把R0存
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值