|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
在《ARM 微控制器基础与实战》程序清单 6.22 的 376 页的 OSIntCtxSW_1 中: LDR R4, [R6] ; Q4 v$ d; W8 k! M3 ~4 l' O
ADD SP, R4, #68 0 k" ?5 Q0 n2 ]/ w# V7 l7 ]
LDR LR, [SP, #-8] / H1 X( s5 H# V
MSR CPSR_c, #(NoInt | SVC32Mode) - o$ C" p( l$ ^% G
MOV SP, R4 LDMFD SP!, {R4,R5}
( K# V4 g/ ^* v6 p7 e2 m/ TLDR R3, =OsEnterSum 8 T" U9 n: x$ }5 P. C9 \
STR R4, [R3]
( I, {& a# o" o7 sMSR SPSR_cxsf, R5
) o% M: H& a3 f/ S9 M+ HLDMFD SP!, {R0-R12, LR, PC }^ & _4 f2 N" ~, e: y; F& q
请问高手 DMFD SP!, {R0-R12, LR, PC }^是不是恢复新任务工作寄存器和工作模式,LR 寄存器一并得到恢复,那么 ADD 指令后面的 LDR LR, [SP, #-8] 指令是不是可以去掉
. w: M) o; h6 I! S( v+ Z: t
! M7 }8 f/ t! ^/ C" Z |
|