STACK和TOP_STACK有什么区别?

时间:2017-03-02 14:51:43

标签: arm stack keil

我正在使用μVisionIDE - Keil ,并且有一个.map文件,其中包含一个图像符号表。

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

为什么“TOP_STACK”指向与“STACK”相同的地址?假设程序刚刚初始化。堆栈中是否存在最初需要512字节空间的数据?

Snippet of .map file

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:-1)

对于找到答案的人,

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

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