这是因为链接器脚本中的`.text`部分的起始地址被设置为`0x10 : AT(0x00)`。在这个设置中,`0x00`是函数的加载地址(LMA),而`0x10`则是函数的虚拟内存地址(VMA)。这样设置是为了给函数留下一些空间作为冗余,用于其他用途(例如跳转表、异常处理等)。
根据你提供的链接器脚本,`rom`的起始地址是`0x0`,而`.text`部分的起始地址设置为`0x10 : AT(0x00)`,这意味着函数的LMA是`0x00`,但VMA是`0x10`。通过这种设置,函数可以在VMA为`0x10`的位置被加载并执行,而链接器脚本确保了函数的LMA为`0x00`,以便将其正确地从固定的位置加载到内存中。
这种设置通常用于嵌入式系统中的ROM代码,以确保代码在预定的位置上运行,并且还可以为其他用途留下一些空间。
请注意,VMA和LMA是链接器脚本中的概念,用于描述代码在内存中的加载和运行地址。在运行时,函数的实际地址会根据链接器脚本中的设置进行偏移和调整。
这是因为链接器脚本中的`.text`部分的起始地址被设置为`0x10 : AT(0x00)`。在这个设置中,`0x00`是函数的加载地址(LMA),而`0x10`则是函数的虚拟内存地址(VMA)。这样设置是为了给函数留下一些空间作为冗余,用于其他用途(例如跳转表、异常处理等)。
根据你提供的链接器脚本,`rom`的起始地址是`0x0`,而`.text`部分的起始地址设置为`0x10 : AT(0x00)`,这意味着函数的LMA是`0x00`,但VMA是`0x10`。通过这种设置,函数可以在VMA为`0x10`的位置被加载并执行,而链接器脚本确保了函数的LMA为`0x00`,以便将其正确地从固定的位置加载到内存中。
这种设置通常用于嵌入式系统中的ROM代码,以确保代码在预定的位置上运行,并且还可以为其他用途留下一些空间。
请注意,VMA和LMA是链接器脚本中的概念,用于描述代码在内存中的加载和运行地址。在运行时,函数的实际地址会根据链接器脚本中的设置进行偏移和调整。
举报