打印

发现CW设置堆栈大小的问题!?

[复制链接]
2179|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ddtv|  楼主 | 2007-1-22 09:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近发现调用一个包含除法的函数老是不对,查来查去也没查明白,反汇编看的迷迷糊糊。
最后发现参数都是在堆栈中传递的,而那个堆栈的尺寸老是0x30。考虑有可能太小了,试着改成0x40就ok了。
进而发现改成0x10,甚至是0x00竟然也不报错,这是cw的缺陷?

另编译模式选择small模式时我的ram就不够用了,可我用tiny模式时还剩下80个字节啊,是不是定义变量时要指定到0页,否则第0页就空着了,这样才能获得最大效率和最小的ram使用量?

相关帖子

沙发
张明峰| | 2007-1-22 13:04 | 只看该作者

CW不检查堆栈大小

CW不检查堆栈大小,用户自己看着办。在prm文件中改变堆栈长度。

在非tiny模式下,变量缺省都被放在0x100以后的空间内。若要放到第0页中,必须特别声明:
#pragma DATA_SEG SHORT MY_ZEROPAGE      //direct addressing data segment
byte year, month, day, hour, minute, second;

使用特权

评论回复
板凳
ddtv|  楼主 | 2007-1-23 11:52 | 只看该作者

那么自己怎样知道设置多大的堆栈长度呢?

堆栈首先不能非常大,否则用户可用的RAM空间就非常小了,堆栈当然也不能太小.
那么有没有办法知道堆栈可能的最大深度呢?这个编译器应该能轻松办到的.
个人实在不好确定大小,也许现在的大小没问题,但换个环境和条件堆栈就变大了呢?
另外张工象#pragma等参数的用法有没有资料可供下载?有中文的最好了,看help真是不好查找.

使用特权

评论回复
地板
张明峰| | 2007-1-23 17:19 | 只看该作者

Help文件都有啊,

在CW安装目录下有help。我的电脑里是在:
D:Program FilesFreescaleCW08 V5.0Helppdf...

使用特权

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

本版积分规则

9

主题

44

帖子

1

粉丝