|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
stmfd sp!, {r0-r3, lr} 【属于8中寻址方式中的“堆栈寻址”】% p. {+ F! m) P6 r! G' n
9 {. H0 Q0 w: P, E* z2 J% j
g/ S1 m7 [% R+ P# j$ W* \5 z- 上面这句ARM汇编指令的伪代码如下
- //SP指针地址变化过程
- SP = SP - 4×4; //4个寄存器,每个4个字节,该语句得到运算后的SP地址
- address = SP; //将运算后的地址赋给临时地址变量address
- //寄存器赋值给内存地址的赋值过程
- for i = 0 to 2
- Memory[address] = ri; //将r0、r1、r2赋给内存有小到大的地址
- address = address + 4; //地址添加4后,将lr赋给最高的地址
- Memory[address] = lr;
& y7 |5 n# D, t }# D
1 ?% p& V% `. g" n0 x. f5 S0 j1 U: @2 N% J, `/ x
/ o, s% ]( L+ u( B4 X9 \5 O
SP栈指针指向的变化; L& E0 }5 H! B( r( ?
$ _; p! D2 y5 n+ s: N, C6 c3 R
/ V$ K5 T) p: M5 ?. D8 B# H1 B
/ |3 m! C' p: X" O8 z3 [
* i3 _: s& k2 s% Z% t9 V- D. P. A- _! T: O9 u* } G
0 n; @7 i. j; Y' p U1 n( Q0 S- o ?. j2 B( t" B
" S" h9 ^0 s/ Z
4 \7 e" D$ J4 p" c |
|