如果应用系统使用了main(),即使用了C运行时库,用户必须重新实现_user_initial_stackheap,告诉C运行时库可用于数据栈的存储区域。
特权模式下的 stack 都放在内存的最高处,然后是用户的 stack,把 stack 设置成向下生长的,也就是入栈的话,SP地址会减少。而 heap 则是往上生长的,从 BSS 段(零初始化段)结束后的空间,就没有什么变量了,这部分可以作为动态内存的pool。
在使用 malloc 的时候就是从这段内存空间(BSS的结束 到 SP栈的当前指针)