查看: 1783|回复: 0
打印 上一主题 下一主题

问个只要用Cortex-M单片机都会遇到的问题,关于堆栈的!!

[复制链接]
跳转到指定楼层
沙发
发表于 2015-6-14 17:23:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


下面一段话是看本论坛上的一位大侠说的:
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来判断的吗???

转载

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

快速回复 返回顶部 返回列表