老师,LR保存函数的返回地址,我理解为函数跳转前的PC指针的值

🔍 溯源 ✍️ Jack | 📅 2024-09-24 | 👍 0 | 原帖↗
#知识星球 #立芯嵌入式 #来源/立芯星球 #技术/C语言 #技术/ARM体系结构 #质量/普通

原帖 | Jack | 2024-09-24 14:28 | 👍0 | 阅读约1

老师,LR保存函数的返回地址,我理解为函数跳转前的PC指针的值,那么这个LR为什么不是0,4,8,c这样的数字结尾的,这里我看到是9结尾的?

LR最低位那个1,是表示当前的程序是Thumb指令集模式。如果是0就是ARM指令集模式的,Thumb指令是16位的,ARM是32位的。ARM架构规定,如果LR最低位是1,意味着当前程序属于Thumb模式,当返回你的这个9结尾地址的时候,会把最低位清除,获得实际跳转地址。

6a3b76e0eecd.jpg


相关笔记