由 MSP430GCC 生成的二进制文件具有奇怪的文本段起始地址

Binary, produced by MSP430GCC, has strange start address for text segment

在为 MSPG2211 使用 msp430-gcc(LTS 20120406 未打补丁)编译示例性 C 程序后,我使用 readelf 命令得到以下输出:

节header

节目header

MSPG2211单片机的地址space结构如下:

0x0000 - 0x01FF - 外围设备

0x0200 - 0x027F - RAM

0x1000 - 0x10FF - 闪存(信息存储器)

0x1100 - 0xF7FF - ???

0xF800 - 0xFFFF - 闪存(代码存储器 + 中断向量)

header部分所示的文本部分从0xF800开始,这是代码存储器的首地址。

文本段,仅包括文本部分,比文本部分大,并且已经从 0xF76C 开始。

据我了解,可加载段被加载到显示的物理地址以执行程序。

那么为什么文本段的起始地址位于未定义的内存区域中?

一些名称部分(例如.text)包含实际加载到 MCU 中的数据。

然而,ELF 程序头仅包含元数据;他们的地址无关紧要。