stm8数据段和代码段的链接问题

来源:互联网 发布:js中字符串长度函数 编辑:程序博客网 时间:2024/06/04 17:50

在做stm8单片机项目的数据遇到栈不够用的问题。

在主函数里面写了太多的变量,重新定义一个函数来做相关的操作就好。(这样在相应的操作进行时才把相关的变量拷贝到栈中)

全局变量:

.BSS段:存放的是未初始化的全局变量和静态变量(至于具体存在哪里要看链接脚本)。


但是未初始化的全局变量不是可执行模块的一部分,只有当使用它们的程序被调用时(即执行时),才分配空间,声明或定义时并不分配。未初始化的全局变量在运行时被初始化为0。也就是说.BSS段最终还是存在.DATA段里面(不知道这样理解对不对。)

局部变量:

编译器按照内存地址递减的方式来给变量分配内存

int a[10];
for (int i = 0; i <= 10; ++i)
{
a[i] = 0;
}
比如上面的例子运行之后会进入死循环,其实就是编译器按照内存地址递减的方式来给变量分配内存的结果。



0 0
原创粉丝点击