嵌入式STMFD SP!,{R0-R7,LR}分析
来源:互联网 发布:ubuntu 安装打印机 编辑:程序博客网 时间:2024/04/30 03:50
STMFD SP!,{R0-R7,LR} 的伪代码如下
SP = SP - 9×4;
address = SP;
for i = 0 to 7
Memory[address] = Ri;
address = address + 4;
address = SP;
for i = 0 to 7
Memory[address] = Ri;
address = address + 4;
Memory[address] = LR;
注意:ARM规定,sp始终是指向栈顶位置的,STM指令把寄存器列表中索引最小的寄存器存在最低地址,所以R0在最低地址,向上依次是R1,R2,...R7,LR。完成后SP指向保存R0的地址。
详解:对于大多数的设计来说都是把栈底设置在高地址,栈顶设置在低地址,即是说上面所说的首先要sp=sp-9×4,这里理解了之后就好理解了,那么执行这条指令后,栈中的数据顺序从栈底到栈顶为lr ,r7,r6,r5,r4,r3,r2,r1,r0,此时sp-->r0,即栈顶,这和堆栈的定义没有冲突,如果sp指向的是lr的话栈就没有用了哦,其实这里stmfd有两种方法处理的,第一种先计算总共压入的数据个数,直接一次更改指针sp=sp-4*(number)并从低地址向高地址存入数据,第二种就是每压入一次就把sp=sp-1*4,同时一个一个的把数据从高地址向低地址压入。
0 0
- 嵌入式STMFD SP!,{R0-R7,LR}分析
- 嵌入式STMFD SP!,{R0-R7,LR}分析
- 嵌入式STMFD SP!,{R0-R7,LR}分析 2012
- 嵌入式STMFD SP!,{R0-R7,LR}分析 2012
- stmfd sp!, {r0-r3, lr}
- LR PC SP寄存器
- sp lr pc详解
- SP,LR,PC寄存器
- STMFD和LDMFD指令分析
- 指令STMFD和LDMFD分析
- 指令STMFD和LDMFD分析
- STMFD和LDMFD指令分析
- 指令STMFD和LDMFD分析
- ARM汇编程序---通过LDMFD/STMFD实现R0-R6寄存器的数据的交换
- ARM汇编程序---通过LDMFD/STMFD实现R0-R6寄存器的数据的交换
- 理解SP、LR和PC
- LR分析
- STMFD和LDMFD指令个人理解分析
- delete释放new[]造成的泄漏
- 如何成为顶级技术巨匠?
- ACM、蓝桥杯等程序竞赛中的一些经验-0
- POJ 3262 Protecting the Flowers(贪心,需要小小优化一下)
- 概率专题·期望
- 嵌入式STMFD SP!,{R0-R7,LR}分析
- Matlab笔记-0
- C语言 数组长度...int length = sizeof(stu) / sizeof(stu[0]);
- 学校里的那首歌
- java温习笔记01:环境配置及编辑器设置
- [c语言]EmailAddresses(for hw)
- 黑马程序员——阶乘的两种实现方法及水仙花数的打印
- 【前端】JS
- RecyclerView的嵌套使用