关于BL指令

[复制链接]
 楼主| vipchenvip 发表于 2012-2-1 17:58 | 显示全部楼层 |阅读模式
假设一段A代码,其中一条指令通过BL跳转到B代码,LR寄存器保存了返回地址,在B代码中又有一个BL指令,跳转到C代码,那么先前LR寄存器中的返回A代码的地址岂不是被冲刷了????,会发生这种情况吗
john_lee 发表于 2012-2-1 19:16 | 显示全部楼层
是的,LR寄存器肯定会被冲掉,所以,要在调用子程序前,把LR寄存器保存到栈中,例如:push {lr},返回时,把栈中保存的lr值传递到PC即可,例如:pop {pc}。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

65

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

1

主题

65

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部