2.2.1.2 LR 返回地址管理


文档摘要

2.2.1.2 LR 返回地址管理 2.2.1.2 LR 返回地址管理:当函数调用链在栈上“失重”时,谁还在替你守着那扇门? 凌晨两点十七分,某车载域控制器固件突然在 中断退出后跳转到非法地址 ——不是 HardFault,不是 BusFault,而是 CPU 悄悄执行了 ,然后一头扎进空指针的深渊。调试器显示 LR = ;栈顶的 值却是正常的返回地址;而 指向的栈帧里, 全部被正确保存……唯独 LR 被无声抹去。 这不是内存越界,不是栈溢出,也不是编译器优化 bug。这是 ARM Cortex-M 系统中一个极隐蔽、极高频、却极少被正视的 LR 管理失效:LR 在异常嵌套与手动汇编干预的夹缝中,被悄悄覆盖,且无任何硬件告警。 我们总说“LR 是返回地址寄存器”,仿佛它生来就该稳如磐石。


发布者: 作者: 转发
评论区 (0)
U