スタックポインタ R13(SP)
MSP スタック ポインタ
PSP スタック ポインタ
リンクレジスタR14(LR)
1"。関数呼び出し
bl または blx を使用してサブルーチンにジャンプする場合、r14 はリターン アドレスを保存し、呼び出しプロシージャの最後に復元できます。BL または BLX を使用する場合、ジャンプ命令はリターン アドレスを r14 に自動的に配置します。サブルーチンは通常、MOV PC、LR BX LR
のいずれかの命令で r14 を PC にコピーして戻ります。
通常子程序这样写,保证了子程序中还可以调用子程序。
stmfd sp!, {lr}
……
ldmfd sp!, {pc}
2"。中断
例外が発生すると、例外モード固有の物理 R14 が、例外モードが戻るアドレスに設定されます。
1. 割り込みが入る
レジスタ内の値は順番に保存され、ハードウェアによって自動的に完了します。
2. 割り込みハンドラを呼び出す
3. 割り込み復帰
LR=0xffff fff1 の場合は、LR の値を確認してください
。? ? ?
LR の値を確認します。LR=0xffff fff9 の場合、
レジスタの値は割り込みに入る前に順番に保存されるため、割り込みに入る前に MSP スタックが使用されることを意味します。すべては MSP ポインタを通じて見つけることができます。 R0、R1、R2、R3、R12、LR、リターン アドレス、PSR は
LR の値をチェックします。LR=0xffff fffD の場合、
レジスタの値は次の値になるため、割り込みに入る前に PSP スタックが使用されることを意味します。割り込みに入る前に順番に保存されます。すべては PSP ポインタ R0、R1、R2、R3、R12、LR、リターン アドレス、PSR で見つけることができます