PSP -----> R0 LOW
R1 |
R2 |
R3 |
R12 |
LR |
PC |
xPSP HIGH
从当前PSP中找到PC指针,该PC指向异常返回后代码继续执行的位置,而LR指向PC所在的函数的返回位置,如下图所示:
main{
function1
{
...
...
PC-------exception occur, and save the xPSP, PC, LR, R12,{R3-R0}
}
LR----->function2
{
}
}
(正常函数调用时PC指针不用压栈,返回后将LR的内容赋值给PC,即可正确返回。)