B跳转指令与Ldr指令几点区别
2012-04-17 19:13
351 查看
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只能在当前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的程序跳转。
相关文章推荐
- ARM汇编中B跳转指令和LDR跳转的区别 【转】
- ARM汇编中B跳转指令和LDR跳转的区别 【转】
- bl和ldr用作跳转指令的区别
- ARM汇编中B跳转指令和LDR跳转的区别
- ARM汇编中B跳转指令和LDR跳转的区别
- arm指令中mov和ldr的区别
- ARM指令ldr和adr的区别
- 转ldr和mov指令的区别(转)
- 汇编跳转指令B、BL、BX、BLX 和 BXJ的区别
- <jsp:forward>标签跳转指令和response.sendRedirect()跳转指令的区别
- 【摘录】arm指令中mov和ldr的区别介绍
- LDR与ADR伪指令的区别
- ARM指令 LDR、LDR伪指令、MOV的区别
- 加载SDRAM以及ldr,bl实现跳转的区别
- bl 和 ldr跳转程序的区别
- [ARM]ldr和 adr/adrl 伪指令的区别
- Servlet实现跳转的几点区别(sendRedirect(),getRequestDispatcher().forwar())
- LDR伪指令与ADR伪指令的区别
- [ARM]ldr和 adr/adrl 伪指令的区别
- LDR指令、LDR伪指令、ADR伪指令区别