.text
adr r0,LC0
ldmia r0,{r1, r2, r3, r4, r5, r6, ip, sp}
subs r0,r0, r1 @ calculate the delta offset
这段代码的第一行text,先声明还是代码段。接着使用adr指令获取LC0的地址,并保存到r0,然后把LC0的内容加载到r1-r6,ip,sp等寄存器。通过减法指令subs来计算LC0的地址与LC0编译保存的地址是否一致,如果一致就跳到标号not_relocated处运行;如果不一致就继续运行下面的重定位代码。
288 .type LC0, #object
289 LC0: .word LC0 @ r1
290 .word __bss_start @ r2
291 .word _end @ r3
292 .word zreladdr @ r4
293 .word _start @ r5
294 .word _got_start @ r6
295 .word _got_end @ ip
296 .word user_stack+4096 @ sp
297 LC1: .word reloc_end - reloc_start
298 .size LC0, . - LC0
289行的.word LC0是在哪赋值的啊??
要是赋值了,该值是多少啊??