Arm STACK和TOP_STACK的区别是什么?

Arm STACK和TOP_STACK的区别是什么?,arm,stack,keil,Arm,Stack,Keil,我使用的是µVision IDE-Keil,有一个.map文件,其中包括一个图像符号表 我把“堆栈”和“顶层堆栈”混淆了。(下图) 为什么“TOP_STACK”与“STACK”不指向同一地址?假设程序刚刚初始化。堆栈中最初是否存储了需要512字节空间的数据 堆栈是堆栈的开始。在这里,它位于0x20000000。TOP_STACK是堆栈之后的第一个可用地址。这里堆栈的长度为512字节(十六进制为0x200)。下一个可用地址是0x20000000+0x200=0x20000200。您可以看到顶部的_

我使用的是µVision IDE-Keil,有一个.map文件,其中包括一个图像符号表

我把“堆栈”和“顶层堆栈”混淆了。(下图)

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


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

对于找到答案的任何人

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


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

谢谢您的回复!我找到了正确的答案。我忘了提到这个模拟器显示了ARM Cortex-M1的特性。我的错。