B跳转指令与ldr指令几点区别

  • B跳转指令是代码位置无关的,经过汇编后会替换为当前PC值加(减)一个修正值,不管这条指令是在哪一个地址执行,都能跳转到指定的位置。

  • B只能在当前PC的32M范围内跳转,LDR只能在当前PC的4KB(0xfff范围)跳转。

  • LDR PC,=xxx指令将向PC直接装载一个标号xxx的值,但标号经过编译后将被替换为一个与RO相对应的值,这样无论指令在何处执行都能跳转到一个指定的位置。

  • 归纳如下:

(1) b step1 :b跳转指令是相对跳转,依赖当前PC的值,偏移量是通过该指令本身的bit[2

3:0]算出来的,这使得使用b指令的程序不依赖于要跳到的代码的位置(位置无关码),只看指令本身。

(2) ldr pc, =step1 :该指令是从内存中的某个位置(step1)读出数据并赋给PC,同样依

赖当前PC的值,但是偏移量是那个位置(step1)的连接地址(运行时的地址),所以可

以用它实现从Flash到RAM的程序跳转。

再普及一点:
b用于不返回的跳转,比如跳到某个标号处,b . 其中的‘.’代表当前地址,那么 b . 就是死循环。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值