frame pointer 始终指向栈底
stack pointer 始终指向栈顶
https://www.cnblogs.com/cmleung/archive/2012/11/06/2757967.html
在ARM处理器中使用R14用作返回连接寄存器(LR), 实现对断点和调用点的记录。在硬件上和指令执行上,CPU 自动完成相应返回点的记录。在ARM 汇编语言程序设计时,R14和LR通用。
ARM处理器相应异常时,会自动完成将当前的PC保存到LR寄存器。
在程序跳转时保存当前地址,即子程序返回地址。子程序通过把r14复制到PC来实现返回
ARM处理器执行子程序调用指令(BL )时,会将调用指令的下紧邻指令的地址保存到LR。即将 当前PC - 4 保存到LR寄存器。
ARM处理器针对不同的模式,共有6个链接寄存器资源(LR ),其中用户模式和系统模式共用一个 LR,每种异常模式都有各自专用的R14 寄存器(LR )。这些链接寄存器分别为 R14、R14_svc、R14_abt、R14_und、R14_irq、R14_fiq, 程序设计者要清晰处理器的模式与相应寄存器的对应关系,都是使用 R14,但不同模式下的R14 不是同一个物理资源,其内容可能天壤之别。
R14 不用做链接寄存器(LR )时,也可以用做通用数据寄存器。
入栈 push {FP,LR} 出栈 {FP,PC}
