ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
20 апреля
306998
Andreas (12.02.2012 14:07, просмотров: 64551) MBedder
Помогите найти вменяемый компилятор для STM8: Привычный ИАР нормально работает, НО выдает жутко неоптимизированный код , например
 140            u32 prom=0;
      000003 5F                    CLRW      X
      000004 BF00                  LDW       S:?w3, X
      000006 BF00                  LDW       S:?w2, X
...................
    145              if(GETBIT(PB_IDR,PINB_ADC_D)) prom|=0x01;
      00001B 720950060C            BTJF      L:0x5006, #0x4, L:??GetHX711_1
      000020 5F                    CLRW      X
      000021 BF00                  LDW       S:?w2, X
      000023 5C                    INCW      X
      000024 BF00                  LDW       S:?w3, X
      000026 CD0000                CALL      L:?or32_l0_l0_l1
      000029 CD0000                CALL      L:?mov_l1_l0
                        ??GetHX711_1:
.....................
    148            if(prom&0x800000)prom|=0xFF000000;
      000037 5F                    CLRW      X
      000038 BF00                  LDW       S:?w1, X
      00003A AE0080                LDW       X, #0x80
      00003D BF00                  LDW       S:?w0, X
      00003F CD0000                CALL      L:?and32_l0_l0_l1
      000042 BE00                  LDW       X, S:?w0
      000044 2602                  JRNE      L:??GetHX711_2
      000046 BE00                  LDW       X, S:?w1
                        ??GetHX711_2:
      000048 270B                  JREQ      L:??GetHX711_3
      00004A AEFF00                LDW       X, #0xff00
      00004D BF00                  LDW       S:?w0, X
      00004F CD0000                CALL      L:?or32_l0_l0_l1
      000052 CD0000                CALL      L:?mov_l1_l0
 
Только начав писать, уже отъел больше 1 к памяти, так и кончится память на простой задаче скоро. Для АВР компилятор прекрасно оптимизирует операции с битами и многобайтными переменными. Попробовал STVD , при настройке на установленный и активизированный COSMIC выдает: Warning: toolset rootpaths have not been specified for at least one of supported toolsets..... Хотя все директории космика выставлены правильно: BIN пусто include Hstm8 lib LIB При попытке компиляции в самом космике ругается на обычные конструкции,например for(u08 i=0;i<24;i++){ требует вынести u08 i=0 из for. И многое другое... Никаких настроек , столь ограничивающих язык я не нашел. Хотя компилит в итоге намного более оптимизированно. Кто-то писал, что для STM8 размер кода примерно равен коду для AVR, но как это вышло??