[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条回答
snoopyzz
1楼-- · 2019-12-18 12:42
【56楼】 snoopyzz

结果一样。


(原文件名:1.PNG)
hsztc
2楼-- · 2019-12-18 14:23
现在IAR 版本才1.2,优化能力还很不足。

iar目前与comsic优化能力也差不了多少,但iar优化能力提升的潜力更大。
CC2530
3楼-- · 2019-12-18 17:53
回复【57楼】hsztc  
-----------------------------------------------------------------------

可能新版改进了吧,但即使如此,如此的优化能力,也差点很远,给你看看cosmic如何优化的...

当x=0x1234指定常量时,会直接把0x12(#18)赋给变量y

u16 x;
u8 y;

void main(void)
{
    x = 0x1234;
    y = (u8)(x>>8);
}
6534  0000               _main:
6538                     ; 7     x = 0x1234;
6540  0000 ae1234                ldw        x,#4660
6541  0003 bf01                  ldw        _x,x
6542                     ; 8     y = (u8)(x>>8);
6544  0005 35120000              mov        _y,#18

===================

当x为变量时,则把x的高位直接赋值给y变量

u16 x = 0x1234;
u8 y;

void main(void)
{
    y = (u8)(x>>8);
}

6534  0000               _main:
6538                     ; 8     y = (u8)(x>>8);
6540  0000 450100                mov        _y,_x
snoopyzz
4楼-- · 2019-12-18 18:11
LS的这段程序在IAR里会被完全优化掉,给个warning说y定义了但没使用过
// ---------------------
void main(void)
{
    x = 0x1234;
    y = (u8)(x>>8);
}

//----------------------

我在IAR For STM8里测试了如下程序,其中bLcdInfoIndex是全局变量
        WORD x = 0x1234;
    BYTE y = (BYTE)(x>>8);
        bLcdInfoIndex = (BYTE)(x>>8);
        if(y) NOP();

得到的汇编是:
//  136         WORD x = 0x1234;
//  137     BYTE y = (BYTE)(x>>8);
//  138         bLcdInfoIndex = (BYTE)(x>>8);
        MOV       N:bLcdInfoIndex, #0x12
//  139         if(y) NOP();
        nop
bigZ
5楼-- · 2019-12-18 18:53
 精彩回答 2  元偷偷看……
CC2530
6楼-- · 2019-12-19 00:03
mark

一周热门 更多>