总见上官一直支持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次,要等到什么时候-_-
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
-----------------------------------------------------------------------
搞错,最近在用NEC和STM8搞混了。。。上面的结果是IAR FOR NEC的。。。
// 7 unsigned int x = 0x1234;
// 8 unsigned char y = x>>8;
// 9 if(y) m = x>>8;
main:
LD A, #0x12
LD L:m, A
// 10 if(m) y++;
曾经测试过瑞萨的MCU,手册说是3个时钟,可实际测试却要11个(其客服曾向我展示过TRACE仿真的数据,和我的测试结果相同)
所以对于x=y这种操作编译后要么是:
MOV x,y
要么是
LD A,x
LD y,A
而LD指令实测速度可能是最快的
2条LD使用的代码量和1条MOV可以说是相同的
可以参考STM8的指令手册
the first priority for someone buying a commercial development tool is reliability, followed by support. speed is low.
IAR is where it is today because its tools are very very reliable. and gcc will never be used commercially because it isn't reliable and its support is non-existent.
一周热门 更多>