嵌入式 > 嵌入式开发 > 详情

arm堆栈操作

发布时间:2025-07-14 发布时间:
|
arm堆栈的组织结构是 满栈降 的形式,满栈即sp是要停留在最后一个进栈元素,降:就是堆栈的增长方向是从高地址向低地址发展。

arm对于堆栈的操作一般采用 LDMFD(pop)和STMFD (push) 两个命令。

以前困惑的就是STMFD 命令 对于操作数 是按照什么顺序压栈的

比如:STMFD sp!{R0-R5,LR} 进栈顺序是:

高地址(1方式)

LR

R5

R4

```````

R0

低地址

还是:

高地址(2方式)

R0

R1

```

R5

LR

低地址

现在通过下表,可以轻松的解决这个问题:

寻址方式说明pop=LDMpush=STM
FA递增满LDMFALDMDASTMFASTMIB
FD递减满LDMFDLDMIASTMFDSTMDB
EA递增空LDMEALDMDBSTMEASTMIA
ED递减空LDMEDLDMIBSTMEDSTMDA

按照图表,可知 STMFD对应的是STMDB,根据arm指令手册,可知STMDB入栈顺序是(1方式)

而LDMFD对应的是LDMIA,这样这两个操作就可以成功配对



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
为助听器应用搭建有效的硬件平台