标题:
[求助]堆栈指针的初始化为什么不在RAM区最高地址
[打印本页]
作者:
shengds
时间:
2009-6-24 10:17
标题:
[求助]堆栈指针的初始化为什么不在RAM区最高地址
如题,一直很困惑,为什么CodeWarrior的C编译器生成的初始化代码将堆栈分配在全局变量和静态变量之后,而不将堆栈指针SP设为RAM空间的最高地址,或者稍微向下偏移一定的空间。最近一个程序就是因为堆栈空间分配的较小导致系统崩溃,所以提出这个想法,还望高手指点。
作者:
shengds
时间:
2009-6-25 15:46
自己支持一下,拜托
作者:
strongchen
时间:
2009-6-26 11:20
你可以将堆栈空间改大呀。
作者:
shengds
时间:
2009-6-26 14:47
我知道可以通过改堆栈的大小空间,我想问的就是:如果直接把堆栈指针放在RAM区的最高的地址位置会有什么影响?
作者:
strongchen
时间:
2009-6-29 15:31
这当然也可以,而且CodeWarrior也有这样的伪指令。但是用这个方法后,编译器就不能计算你到底要多大的堆栈空间,也就无法提示是否有RAM与堆栈发生冲突的情况了。
作者:
shengds
时间:
2009-7-3 10:21
谢谢,不过这样做你看一下行不行:其它的东西都不变,和以前默认的方式一样,在startup函数里对SP值的初始化进行修改,将其指定到RAM区的最高地址。这样的话可以保证编译器能够判断堆栈区与RAM是否有冲突,不知你的意思怎样。
作者:
strongchen
时间:
2009-7-3 16:50
可以一试。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0