首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

[求助]堆栈指针的初始化为什么不在RAM区最高地址

[求助]堆栈指针的初始化为什么不在RAM区最高地址

如题,一直很困惑,为什么CodeWarrior的C编译器生成的初始化代码将堆栈分配在全局变量和静态变量之后,而不将堆栈指针SP设为RAM空间的最高地址,或者稍微向下偏移一定的空间。最近一个程序就是因为堆栈空间分配的较小导致系统崩溃,所以提出这个想法,还望高手指点。

自己支持一下,拜托

你可以将堆栈空间改大呀。
海纳百川  有容乃大

我知道可以通过改堆栈的大小空间,我想问的就是:如果直接把堆栈指针放在RAM区的最高的地址位置会有什么影响?

这当然也可以,而且CodeWarrior也有这样的伪指令。但是用这个方法后,编译器就不能计算你到底要多大的堆栈空间,也就无法提示是否有RAM与堆栈发生冲突的情况了。
海纳百川  有容乃大
谢谢,不过这样做你看一下行不行:其它的东西都不变,和以前默认的方式一样,在startup函数里对SP值的初始化进行修改,将其指定到RAM区的最高地址。这样的话可以保证编译器能够判断堆栈区与RAM是否有冲突,不知你的意思怎样。
可以一试。
海纳百川  有容乃大
返回列表