我正在使用gdb在嵌入式设备上加载可执行文件。加载可执行文件时,gdb会说:

xPSR: 0x01000000 pc: 0xf0094902 msp: 0x2001b508
Loading section .text, size 0x16240 lma 0x8000000
Loading section .data, size 0x8f0 lma 0x8016240
Start address 0x8000000, load size 92976

据我所知,pc是指令指针。我假设“起始地址”是pc的起始地址。然而,在gdb给我的信息中,起始地址(0x8000000,顺便说一下,它与.text相同)与pc不同(0xf0094902)。
pc和起始地址有什么区别?让起始地址与.text相同有意义吗?

最佳答案

这里所指的“开始地址”是二进制映像的开始,而不是执行开始地址。执行的起始地址是重置向量中的任何内容(假设您像以前一样使用cortex-m3?)是的。

10-08 02:21