ARM指令的含义

3
 sub     lr,lr,#4
 stmfd   sp!,{lr}
 stmfd   sp!,{r0-r14}^
 mrs     r1,spsr
 stmfd   sp!,{r1}
 bl      irqHandler
 ldmfd   sp!,{r1}
 msr     spsr_cxsf,r1
 ldmfd   sp!,{pc}^
 bl      irqHandler

有人能帮我解释一下 '^' 的意思吗,我不太明白 T_T 它和

有什么区别?

stmfd   sp!,{r0-r14}^

并且

stmfd   sp!,{r0-r14}

????

1个回答

5
ARM手册来看:
“^”是一个可选的后缀。在用户模式或系统模式下不应使用它。它有两个目的: 如果op是LDM且reglist包含pc(r15),除了正常的多个寄存器传输之外,SPSR会被复制到CPSR中。这是用于从异常处理程序返回。仅在异常模式下使用此选项。否则,数据将传输到或从用户模式寄存器而不是当前模式寄存器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接