在使用 msp430-gcc(未修补 LTS 20120406)为 MSPG2211 编译示例 C 程序后,我使用 readelf 命令得到以下输出:
节标题
程序头
MSPG2211 微控制器的地址空间结构如下:
0x0000 - 0x01FF - 外设
0x0200 - 0x027F - 内存
0x1000 - 0x10FF - 闪存(信息存储器)
0x1100 - 0xF7FF - ???
0xF800 - 0xFFFF - 闪存(代码存储器 + 中断向量)
部分标题中显示的文本部分从代码存储器的第一个地址 0xF800 开始。
文本段,仅包括文本部分,比文本部分大,并且已经从 0xF76C 开始。
据我了解,可加载段被加载到显示的物理地址以供程序执行。
那么为什么文本段的起始地址位于未定义的内存区域内呢?