- 1 oracle参数文件备份,Oracle基于用户管理的备份与恢复之归档日志和参数文件
- 2 测量行业巨头收购量子计算仪器公司,欲打造更安全的互联世界
- 3 XSS 前端防火墙 —— 整装待发
- 4 python教程是什么课文_python教程python详细教程
- 5 NEC加入美国国土安全局AIS网络威胁信息官民共享体系
- 6 抓取js动态生成数据
- 7 Java代码分析器(四): 代码改写技术
- 8 计算机程序 dos,计算机Dos命令,三种显示系统信息与硬件信息的bat批处理代码...
- 9 液冷数据中心,理想如何照进现实?
- 10 .netcore使用SocketAsyncEventArgs Pool需要注意!
转自:http://hi.baidu.com/wuqi19881003/item/f293c7a7e228e613a8cfb756
bx lr
的作用等同于
mov pc,lr
即跳转到lr中存放的地址处。
那么lr存放的是什么地址呢?
lr就是连接寄存器(Link Register, LR),在ARM体系结构中LR的特殊用途有两种:一是用来保存子程序返回地址;二是当异常发生时,LR中保存的值等于异常发生时PC的值减4(或者减2),因此在各种异常模式下可以根据LR的值返回到异常发生前的相应位置继续执行。
当通过BL或BLX指令调用子程序时,硬件自动将子程序返回地址保存在R14寄存器中。在子程序返回时,把LR的值复制到程序计数器PC即可实现子程序返回。
如,可以使用MOV PC, LR或者BX LR来完成子程序返回。另外,也可以在在子程序入口处使用下面的指令将LR保存到栈中