首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

arm9 ldr r13,=0x1000解决方案

2012-12-31 
arm9 ldr r13,0x1000我用的是飞凌的 ok2440 ,哎 菜鸟一只 AREA |DATA|,CODE,READONLYENTRYldr r13,0x100

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,

热点排行