STACK 和 TOP_STACK 有什么区别?

What is the difference between STACK and TOP_STACK?

我正在使用 µVision IDE - Keil,并且有一个 .map 文件,其中包含一个图像符号 Table。

我对 "STACK" 和 "TOP_STACK" 感到困惑。 (下图)

为什么 "TOP_STACK" 不指向与 "STACK" 相同的地址?假设程序刚刚初始化。堆栈中是否有初始存储需要 512 字节 space 的数据?

STACK 是堆栈的开始。这里它位于 0x20000000。 TOP_STACK是栈后第一个可用地址。这里堆栈的长度为 512 字节(十六进制为 0x200)。下一个可用地址是 0x20000000 + 0x200 = 0x20000200。可以看到TOP_STACK是0x20000200。 这通常会告诉链接器数据可以放在 RAM 中的哪个位置或堆可以从哪里开始。

对于找到此问题答案的任何人,

我忘了说它显示的是 ARM Cortex-M1 处理器的信息。

对于 ARM Cortex-M1 处理器,堆栈是递减堆栈,我已经声明堆栈有 512 个字节 space。因此,TOP_STACK 指向第一个可用的 space。此时堆栈不存储任何数据。