1、b 分支指令
(1) 无条件跳转
b reset
branch,无条件跳转,程序跳转后不返回。只修改程序计数器PC,无法自动回来,(除非事先手动保存了PC值)。
限制:跳转范围是相对当前指令地址的前后32MB空间,这是因为跳转地址是通过一个24位的偏移量计算出来的,所以只能在±32MB范围内跳转。
(2) bl 带返回地址的跳转
bl clock_init
branch with link,带返回地址的跳转,通常用于函数(子程序)调用,跳转前会把下一条指令的地址保存到LR链接寄存器(也即R14)。子程序执行结束后,可以通过bx lr指令返回主程序继续执行。
限制:跳转范围是相对当前指令地址的前后32MB空间,这是因为跳转地址是通过一个24位的偏移量计算出来的,所以只能在±32MB范围内跳转。