ARM指令STMFD和LDMFD
来源:互联网 发布:网络的利与弊作文600 编辑:程序博客网 时间:2024/05/16 02:21
原址:http://blog.csdn.net/kickxxx/article/details/9192265#comments
STMFD
ST - store
M - Multiple
F - FULL
D - Descending
LDMFD
LD - Load
M - Multiple
F - FULL
D - Descending
栈指针通常可以指向不同的位置。栈指针指向栈顶元素(即最后一个入栈的数据元素)时称为FULL栈;栈指针指向与栈顶元素相邻的一个可用书局单元时称为EMPTY栈。
数据栈的增长方向也可以不同。当数据栈向内存地址减小的方向增长时,称为Descending栈;当数据栈向内存地址增加的方向增长时,称为 Ascending栈
综合上面两点,可以存在以下四种数据栈:
FD - Full Descending
ED - Empty Descending
FA - Full Ascending
EA - Empty Ascending
因此实际上存在下面这些批量load/save指令:
LDMFA, LDMFD, LDMEA, LDMED
STMED, STMEA, STMFD, STMFA
给定数据栈对应着的特定批量load/save指令,也决定了地址变化方式:
比如FD栈,对应的批量传送指令是LDMFD/STMFD,对应的地址变化方式是IA(事后递增方式), DB(事先递减方式)
STMFD SP!, {R0~R7, LR}
start_address = sp - 9 * 4
end_address = sp - 4
把寄存器r0~r7和LR共9个寄存器,存储到start_address开始, 到end_address结束的栈中,并且修改SP的值(SP变小),相当于压栈。
LDMFD SP!, {R0~R7, LR}
start_address = SP
end_address = SP + 9 * 4
把堆栈从start_address开始,到end_address内的值恢复到寄存器R0, R1... R7和LR中,并修改SP的值(SP变大),相当于出栈。
- ARM指令STMFD和LDMFD
- ARM指令STMFD和LDMFD
- ARM指令STMFD和LDMFD
- ARM 指令STMFD和LDMFD分析
- ARM汇编指令-STMFD和LDMFD
- ARM指令中的STMFD和LDMFD简介
- ARM STMFD 和 LDMFD
- STMFD和LDMFD指令分析
- 指令STMFD和LDMFD分析
- 指令STMFD和LDMFD分析
- STMFD和LDMFD指令分析
- 指令STMFD和LDMFD分析
- STMFD和LDMFD指令个人理解分析
- STMFD和LDMFD指令个人理解分析
- STMFD和LDMFD指令个人理解分析
- STMFD和LDMFD指令个人理解分析
- STMFD和LDMFD指令个人理解分析
- STMFD和LDMFD指令个人理解分析
- cocos2D-X源码分析之从cocos2D-X学习OpenGL(17)----发光体
- Hadoop Web项目--Mahout0.10 MR算法集锦
- [PHP实例] php生成圆角图片代码
- MySQL 性能监控4大指标——第一部分
- 自己利用接口创建监听器并调用
- ARM指令STMFD和LDMFD
- Python —— 模块
- SSIS 连接 Tabular Cube 出现 0x80040E21等错误的解决办法
- Android之Fragment(五):Fragment的通信问题
- python多线程调用exit无法退出
- Content Provider应用实例
- nginx安装的一些问题
- 名片
- ArrayList,LinkedList,Vestor区别及其优缺点