当前位置: 代码迷 >> WinCE >> arm9 ldr r13,=0x1000解决方案
  详细解决方案

arm9 ldr r13,=0x1000解决方案

热度:497   发布时间:2016-04-28 12:37:14.0
arm9 ldr r13,=0x1000
  我用的是飞凌的 ok2440 ,哎 菜鸟一只 


AREA |DATA|,CODE,READONLY
ENTRY
ldr r13,=0x1000
IMPORT LedMain
b LedMain
END

我看见 led bell等裸机程序中都有这个汇编跳转程序的    可是不懂 ldr r13,=0x1000  这句话有什么作用? =0x1000是什么啊? 教材上也没写,网上这东西又找不到的...帮帮忙
------解决思路----------------------
有“=”号表示ldr是一个伪指令。
ldr r13,=0x1000  
就表示把立即数0x1000送入r13
------解决思路----------------------
引用:
呵呵? 一直不懂那个 =? 是什么意思 ,现在知道了?

简单讲就是将LDR PC,=value可以这样理解:
MOV Rd,#value 或者
LDR Rd, [PC, #offset]

在高手看来很简单吧? 可是俺是菜鸟

不错,看到那个=号就知道LDR是伪指令,用来解决mov之类或者ldr不能直接解决的问题,把这个问题留给汇编器来解决。LDR r13,=0x1000.看看0x1000内存4k的位置有些什么东西,r13一般表示为lr,程序跳转用的
------解决思路----------------------
引用:
r13是stack pointer,因为后面要跳到LedMain,估计这个function是用c写的,所以必须要事先分配stack,否则c程序没法运行。给r13赋值就是分配stack,对跑马灯来说只要是可用内存就行,并不在乎具体地址在哪。


对,R13不是lr,
  相关解决方案