arm堆栈操作
时间:11-28
来源:互联网
点击:
arm堆栈的组织结构是 满栈降 的形式,满栈即sp是要停留在最后一个进栈元素,降:就是堆栈的增长方向是从高地址向低地址发展。
以前困惑的就是STMFD 命令 对于操作数 是按照什么顺序压栈的
比如:STMFD sp!{R0-R5,LR} 进栈顺序是:
高地址(1方式)
LR
R5
R4
```````
R0
低地址
还是:
高地址(2方式)
R0
R1
```
R5
LR <-sp
低地址
现在通过下表,可以轻松的解决这个问题:
寻址方式 | 说明 | pop | =LDM | push | =STM |
FA | 递增满 | LDMFA | LDMDA | STMFA | STMIB |
FD | 递减满 | LDMFD | LDMIA | STMFD | STMDB |
EA | 递增空 | LDMEA | LDMDB | STMEA | STMIA |
ED | 递减空 | LDMED | LDMIB | STMED | STMDA |
按照图表,可知 STMFD对应的是STMDB,根据arm指令手册,可知STMDB入栈顺序是(1方式)
而LDMFD对应的是LDMIA,这样这两个操作就可以成功配对
arm堆栈操 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)