ldr r3, =pxCurrentTCB /* 当前任务TCB地址 */
ldr r1, [r3] /* 给r1当前TCB的值 */
ldr r0, [r1] /* 给r0栈顶的值 */
ldmia r0!, {r4-r11} /* 以r0为基地址出栈 */
这个操作中 R0 已经是一个数值了,而不是地址了,怎么能够连续出栈呢?
ldr r3, =pxCurrentTCB /* 当前任务TCB地址 */
ldr r1, [r3] /* 给r1当前TCB的值 */
ldr r0, [r1] /* 给r0栈顶的值 */
ldmia r0!, {r4-r11} /* 以r0为基地址出栈 */
这个操作中 R0 已经是一个数值了,而不是地址了,怎么能够连续出栈呢?
懂了!大概对应关系是
r3 = pxCurrentTCB* (TCB的指针的指针)
r1 = pxCurrentTCB (也就是TCB的指针 TCB *)
r0 = TCB (即为TCB的前32位,TCB->pxTopOfStack)