[stm8s]IAR for stm8果然是杯具-_-

2019-12-11 18:34发布

总见上官一直支持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次,要等到什么时候-_-
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
90条回答
stm8s103
2019-12-15 07:03
回复【27楼】Cliff
-----------------------------------------------------------------------
但是,iar的大方向应该定下来了:那就是我不喜欢、不看好的“虚拟寄存器”
只要它不放弃这点,我就不会用iar
但是它应该不会改变架构了
-----------------------------------------------------------------------

楼上有偏见了。

虚拟寄存器不好的地方,只是中断的时候要保护虚拟寄存器,
但是优点也是显而易见的,解放通用寄存器,减少压栈出栈操作。

楼上玩OS吧,大概是认为iarstm8任务切换需要保护16个虚拟寄存器,浪费时间。
可以和AVR比较一下,
avr 一个push是两个时钟周期,32个寄存器要64个时钟周期,
stm8一个push是一个时钟周期,16个虚拟寄存器才16个周期,再加上9个通用寄存器入栈时间,总共25个时钟周期,
大大小于AVR寄存器保护时间。

AVR用OS都能用很好,stm8更不是问题。

一周热门 更多>