Hyperlink 如何使用分支和链接
这是对象转储文件,但我无法理解为什么在arm模式下分支和链接总是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
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文档(如果您还没有找到问题的答案)。