打印
[STM8]

STM8 栈 分配在哪里?

[复制链接]
1815|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
longforljy|  楼主 | 2015-4-10 14:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在百度上苦苦搜索不果,在这里请教论坛里的各路大神,希望能得到确切的答案,解决这个困扰了我好久的问题--->请问,stm8 的堆栈确切长度和地址是在哪里设置的?会占用内存吗?

我知道stvd里面有 short stack(+mods0)之类的选项,但是这个并不明确
我担心由于 变量 和 堆栈 在内存区交叉重叠了,会导致程序概率性的异常
PS:编译环境  win7   STVD  COSMIC
***********************************题外话*****************************
我目前用的是 stm8sf103p,在写程序的过程中,遇到许多次奇奇怪怪的不符合逻辑的现象

有时候就仅仅是前面增加一个unsigned char hehe; 这样的语句(什么都不干),就会导致程序异常,去掉就好了

沙发
amanda_s| | 2015-4-15 13:42 | 只看该作者
堆栈当然也在内存里。从RAM的高地址开始(栈顶)。
STM8的参考手册里应该有介绍,楼主可以去看看。
Stack的大小在link文件里分配。使用STVD,可以在各个peoject的settings菜单,linker页中进行配置(category选择input).
怎么设置应该可以从STVD的用户手册里找到。

使用特权

评论回复
板凳
dami| | 2015-4-15 15:43 | 只看该作者
堆栈是占内存的,编译前设置,应该是在程序里.有个地方设置.具体不记得了.看到就知道.你查查.

使用特权

评论回复
地板
longforljy|  楼主 | 2015-5-14 11:50 | 只看该作者
amanda_s 发表于 2015-4-15 13:42
堆栈当然也在内存里。从RAM的高地址开始(栈顶)。
STM8的参考手册里应该有介绍,楼主可以去看看。
Stack的 ...

之前一直没想到在线debug看一下函数内的变量地址就知道stack是不是占用内存,以及具体占用的地址

最后证明是从ram的屁股,即高地址0x3ff(假设1k的ram)开始占用

不过还是没能找到直接限制stack大小的设置参数

有空我研究下stvd的手册,网络上似乎没个清晰的说法
不过我想可能stvd真没有随意设置stack大小的办法(编译器有个什么 short stack  long stack的选项,但是没具体的大小可以设置)

使用特权

评论回复
5
longforljy|  楼主 | 2015-5-14 12:13 | 只看该作者
手册快速浏览了一遍,没有发现STVD显式控制stack大小的地方

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

10

帖子

1

粉丝