[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条回答
steven
1楼-- · 2019-12-19 00:31
回复【60楼】bigZ  
-----------------------------------------------------------------------

搞错,最近在用NEC和STM8搞混了。。。上面的结果是IAR FOR NEC的。。。
bigZ
2楼-- · 2019-12-19 00:38
IAR 1.20 for STM8的测试结果,优化开到最高
//    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++;
bigZ
3楼-- · 2019-12-19 02:25
对于CISC的MCU来说,MOV实际使用的时钟周期比手册中说的可能要多
曾经测试过瑞萨的MCU,手册说是3个时钟,可实际测试却要11个(其客服曾向我展示过TRACE仿真的数据,和我的测试结果相同)
所以对于x=y这种操作编译后要么是:
MOV x,y
要么是
LD A,x
LD y,A

而LD指令实测速度可能是最快的
2条LD使用的代码量和1条MOV可以说是相同的
可以参考STM8的指令手册
bigZ
4楼-- · 2019-12-19 04:03
 精彩回答 2  元偷偷看……
hsztc
5楼-- · 2019-12-19 06:51
mark
chenyh85
6楼-- · 2019-12-19 09:56
"貌似IARSTM8目前工作重心放在了调试工具上(看最新的1.3更新,基本上都是关于调试工具的),"

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.

一周热门 更多>