ARM7 LPC2378 远程升级----STMFD、LDMFD
这里STMFD、LDMFD讲的比较浅显,要想深入理解,大家可以看看这篇文章点击打开链接
入栈、出栈的指令格式:
{cond} Rn{!},
{cond}:指令类型
{cond}:指令类型
Rn:基址寄存器,其不可以为R15
{!}:为可选后缀,若选用该后缀,表示请求回写,则当数据传送完毕之后,将最后的地址写入到基址 寄存器
{!}:为可选后缀,若选用该后缀,表示请求回写,则当数据传送完毕之后,将最后的地址写入到基址 寄存器
(Rn)中,否则,W=0。表示请求不写回,基址寄存器的内容不改变。
{^}:寄存器列表,寄存器范围包含在{}(比如{R0,R2-R7,R10}),其可以是R0~R15的任意组合。由于R15是
pc,对其操作可能会造成程序跳转,R15在最后一个被传输。序号低的寄存器对应于存储器的低地址,
不
考虑{...}中的次序
STMFD:满递减入栈 LDMFD:满递减出栈
为什么在这里要给大家讲这两条指令,因为下篇将会谈到ARM7远程升级时的重点——软中断SWI,会涉及到这两条指令及上篇所讲的PC、SP、LR三个寄存器。