因仑“3+1”工程特种兵精英论坛

标题: 问个只要用Cortex-M单片机都会遇到的问题,关于堆栈的!! [打印本页]

作者: 张衍波    时间: 2015-6-14 17:23
标题: 问个只要用Cortex-M单片机都会遇到的问题,关于堆栈的!!


下面一段话是看本论坛上的一位大侠说的:
MSP的位置 = 全局变量数+HEAP_SIZE+Stack_Size。
KEIL编译器对RAM的排列方式(地址由低到高):
    1、全局变量(包括已初始化的变量和没初始化的变量);
    2、Heap所占的空间;
    3、主Stack所占空间;


首先,我认为这段话肯定是对的,应该没有问题,,,


可是,我不明白的是:编译器根据下面两段代码,就能知道我定义的存储区是堆栈吗???
Stack_Size      EQU     0x0200;


                AREA    STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem       SPACE   Stack_Size
__initial_sp   




Heap_Size       EQU     0x000;


                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem        SPACE   Heap_Size
__heap_limit




SPACE伪指令是汇编语言中用于定义内存空间的,可是,编译器怎么知道我定义的Stack_Mem存储区是栈空间呢???难道是根据这个存储区的名字叫:Stack_Mem来判断的吗???

转载






欢迎光临 因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) Powered by Discuz! X3.4