ARM引导加载程序:值为;启动“armboot”;

ARM引导加载程序:值为;启动“armboot”;,arm,bootloader,Arm,Bootloader,在S3C24X0(ARM920T)的U-boot中,我们使用以下指令跳转到C部分: ldr pc, _start_armboot _start_armboot: .word start_armboot 但是我怎么知道start\u armboot的价值呢?我找不到何时何地定义了start\u armboot的地址值。它也不存在于.lds文件中。还是因为 _start_armboot: .word start_armboot 我们直接将start_armboot放在当前位置之后的内存中

在S3C24X0(ARM920T)的U-boot中,我们使用以下指令跳转到C部分:

ldr pc, _start_armboot  
_start_armboot: .word start_armboot  
但是我怎么知道start\u armboot的价值呢?我找不到何时何地定义了start\u armboot的地址值。它也不存在于.lds文件中。还是因为

_start_armboot: .word start_armboot

我们直接将start_armboot放在当前位置之后的内存中?那么,我们如何将此指令/地址与“void start\u armboot(void)”的C函数相关联呢?

\u start\u armboot:.word start\u armboot
只是指将符号的地址放在该位置

链接器负责在链接时用正确的地址填充它

在内部,
start\u armboot
只是一个存根,当它被编译成一个对象文件时,它填充了一些伪值(通常为零)。稍后,当所有对象文件都被收集到一起时,链接器开始将各个部分组合在一起。一旦所有的部分都布置好了,它就会通过对象文件返回并填充存根,因为现在链接器已经知道了符号的位置