Hyperlink 如何使用分支和链接

Hyperlink 如何使用分支和链接,hyperlink,arm,branch,Hyperlink,Arm,Branch,这是对象转储文件,但我无法理解为什么在arm模式下分支和链接总是0xebfffffe: 7 00000000 <main>: 8 0: e92d4800 push {fp, lr} 9 4: e28db004 add fp, sp, #4 10 8: e24dd008 sub sp, sp, #8 11 c: e3a0300a mov r3, #10 1

这是对象转储文件,但我无法理解为什么在arm模式下分支和链接总是
0xebfffffe

 7 00000000 <main>:
 8    0:   e92d4800        push    {fp, lr}
 9    4:   e28db004        add     fp, sp, #4
10    8:   e24dd008        sub     sp, sp, #8
11    c:   e3a0300a        mov     r3, #10
12   10:   e50b3008        str     r3, [fp, #-8]
13   14:   e51b0008        ldr     r0, [fp, #-8]
14   18:   ebfffffe        bl      2c <fib>
15   1c:   e50b000c        str     r0, [fp, #-12]
16   20:   e1a00003        mov     r0, r3
17   24:   e24bd004        sub     sp, fp, #4
18   28:   e8bd8800        pop     {fp, pc}
19
20 0000002c <fib>:
21   2c:   e92d4810        push    {r4, fp, lr}
22   30:   e28db008        add     fp, sp, #8
23   34:   e24dd014        sub     sp, sp, #20
7 00000000:
8 0:e92d4800推送{fp,lr}
9 4:e28db004添加fp,sp,#4
10 8:e24dd008子sp,sp,#8
11 c:e3a0300a mov r3,#10
12 10:e50b3008 str r3[fp,#-8]
13 14:e51b0008 ldr r0[fp,#-8]
14 18:ebfffffe bl 2c
15 1c:e50b000c str r0[fp,#-12]
16 20:e1a00003 mov r0,r3
17 24:e24bd004子sp,fp,#4
18 28:e8bd8800 pop{fp,pc}
19
2000万2C:
212C:e92d4810推送{r4,fp,lr}
22 30:e28db008添加fp,sp,#8
23 34:e24dd014子sp,sp,#20
这与fib使用参考手册的方法计算的地址不同。

我的猜测是:


您可能使用了一个已编译的对象(*.o)文件,但最终地址是在链接器中计算出来的,一旦链接完成程序,它就会被放置到位。在此之前,将使用占位符。

谢谢您的回答,我可以再问一个问题吗?我怎样才能得到包含二进制文件的最终地址?你来算吧。如果您试图自己使用此对象,则必须链接或模拟链接。创建一些简单的示例,让工具来完成,然后您可以从中了解arm文档(如果您还没有找到问题的答案)。