ARM CM0 push和pop指令

本文详细解析了ARMCortex-M0处理器中堆栈的使用方式,包括满-自减堆栈的工作原理,以及PUSH和POP指令如何进行寄存器内容的保存与读取。通过具体实例展示了堆栈指针的变化过程,帮助读者深入理解ARM架构的堆栈机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《ARM Cortex-M0权威指南(中文) 高清扫描版.pdf》

<20071230123408_常用ARM指令集及汇编v1.0.12发行>
<cortex_m0_Generic_User_Guide.pdf> (good)
在这里插入图片描述

堆栈:处理器使用
满-自减 堆栈(full-descending stack),
堆栈指针指向最后一个入栈单元,且向低地址生长,系统复位后指针寄存器从地址0处装载内容;

在这里插入图片描述

PUSH 指令

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

push 将寄存器中的内容,保存到堆栈指令指向的内存上面。

例子:
比如当前 堆栈指针,指向 0x2000 0284

这个时候寄存器的值:
R0 = 0x1212 1212
R1 = 0x0000 1BC3
R2 = 0x0000 1BC3
R3 = 0x0000 0000

执行指令 PUSH {R0 - R3}

之后,
内存地址:
0x2000 0274的值为: 0x1212 1212 --------- R0
0x2000 0278的值为: 0x0000 1BC3 --------- R1
0x2000 027C的值为: 0x0000 1BC3 --------- R2
0x2000 0280 的值为: 0x0000 0000 --------- R3

执行之后 堆栈指针,指向的地址为: 0x2000 0274

POP 指令

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
例子:
内存:
0x2000 0294 = 0x1212 1212
0x2000 0298 = 0xEFEF EFEF
0x2000 029C = 0x0000 2079
0x2000 02A0 = 0x0100 0000

这个时候,堆栈指针 指向的地址为:0x2000 0294
那么 执行指令如下:
POP {R0 -R3}

执行之后,
R0 = 0x1212 1212
R1 = 0xEFEF EFEF
R2 = 0x0000 2079
R3 = 0x0100 0000

堆栈指针指向的位置为: 0x2000 02A4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值