我正在使用μVisionIDE - Keil ,并且有一个.map文件,其中包含一个图像符号表。
我对“STACK”和“TOP_STACK”感到困惑。 (下图)
为什么“TOP_STACK”指向与“STACK”相同的地址?假设程序刚刚初始化。堆栈中是否存在最初需要512字节空间的数据?
答案 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指向第一个可用空间。堆栈此时不存储任何数据。