总见上官一直支持IAR,我今天也突然有兴致换个编译器试试,
移植了cosmic下的一个stm8s103F3的工程,编译成功,结果发现真杯具-_-
cosmic下 data:58 flash:2578 堆栈未知(我没做堆栈占用信息的统计工具) 我并没有使用开代码压缩,即使开了也就再少几十字节,我写的代码一向注重优化了。。。
结果在IAR下
2 143 bytes of readonly code memory
1 105 bytes of readonly data memory
326 bytes of readwrite data memory
杯具。。。等IAR懂了stm8的指令,等IAR懂(u8)(a>>8)只取低8位就可以不需要真的移8次,要等到什么时候-_-
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
iar不会stm8指令,
---------------
从长远讲,cosmic可能一直悲剧下去。
iar提升空间应该还有很多。
同样一个程序在iar下最大压缩,只比cosmic未压缩的文件下小一点点
同样不压缩,iar的程序庞大的惊人
cosmic的压缩很狗屎,只有最大压缩。
我一最大压缩,程序运行就不正常了,不象iar可以调整优化选项
cosmic我只能不压缩了,大小还好
1 105 bytes of readonly data memory ----->iar数据表格
326 bytes of readwrite data memory ----->iar所有ram,包括16个虚拟寄存器,默认256byte堆栈,用户ram
默认堆栈是很大很大的,要用户按需设置!!!!
对于这个工程,IAR最高等级优化效果如下
2 143 bytes of readonly code memory
1 105 bytes of readonly data memory
326 bytes of readwrite data memory
不优化如下
2 830 bytes of readonly code memory
1 105 bytes of readonly data memory
326 bytes of readwrite data memory
相差的确不少
ps. cosmic的优化默认就是开的,只是代码压缩没开
我如果禁止cosmic优化,
ram还是58,flash是2974,
比2558多了416字节。
2 143 bytes of readonly code memory ----->iar代码
1 105 bytes of readonly data memory ----->iar数据表格
326 bytes of readwrite data memory ----->iar所有ram,包括16个虚拟寄存器,默认256byte堆栈,用户ram
默认堆栈是很大很大的,要用户按需设置!!!!
-----------------------------------------------------------------------
请问下,我刚装IAR,不大懂,在哪里设置?
还有这256字节堆栈是作什么用的??
在cosmic中,变量区向上增长,堆栈向下增长,编译器会识别出函数调用关系,如果两个区有重合,就会报错的
原来装IAR是因为刚买块STM32的开发板,当然首选用IAR ,想着STM8也一起统一下编译器,目前看来是不现实了
一周热门 更多>