реклама на сайте
подробности

 
 
> Я просто не верю что IAR STM8 такой тупой!, Ведь это же всегда был один из самых качественных компиляторов
sigmaN
сообщение May 9 2017, 20:00
Сообщение #1


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Код
#pragma inline=forced
static void inline f(uint8_t i)
{  
  while(--i)
    asm("");
}

int main()
{
  f(10);
}

В результате:

Код
    183          int main()
    184          {
   \                     main:
   \   000000 52 01        SUB       SP, #0x1
    186            f(10);
   \   000002 35 0A ....   MOV       S:?b0, #0xa
   \   000006 20 00        JRA       L:??main_0
   \                     ??main_1:
   \                     ??main_0:
   \   000008 B6 ..        LD        A, S:?b0
   \   00000A 4A           DEC       A
   \   00000B B7 ..        LD        S:?b0, A
   \   00000D 26 F9        JRNE      L:??main_1


ЗАЧЕМ? Зачем он делает всё это????

Настройки компилятора по полной программе: Multi-file compilation, High, Speed +No size constraints

P.S.
Cosmic же на много толковее справился, хотя я конечно по прежнему не понимаю почему нельзя просто с регистром A работать.... Зачем в стек то?
Код
  60                     .text:    section    .text,new
  61  0000               _main:
  63  0000 88                push    a
  64       00000001      OFST:    set    1
  67                ; 10 f(12);
  70  0001 a60c              ld    a,#12
  71  0003 6b01              ld    (OFST+0,sp),a
  74  0005               L72:
  75                ; 5     _asm("");
  79                ; 4   while(--i)
  81  0005 0a01              dec    (OFST+0,sp)
  83  0007 26fc              jrne    L72
///////////////////////////////////////////////  
84  0009               L73:
  86  0009 20fe              jra    L73
  99                         xdef    _main
118                         end


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sigmaN
сообщение May 10 2017, 10:01
Сообщение #2


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Грустно, потому что я в другом окне смотрю, что из этого кода делает avr-gcc( вариант с asm("nop") )
Код
00000048  LDI R24,0x09        Load immediate
00000049  NOP         No operation
0000004A  SUBI R24,0x01        Subtract immediate
0000004B  BRNE PC-0x02        Branch if not equal


Алсо не очень понятно, как IAR может быть при всех этих лишних телодвижениях быстрее........
Очень жаль, что разработчики компиляторов считают СТМ8 не важной архитектурой sad.gif
У меня еще есть пример как IAR весело тупит на куске С++ кода, где на этапе компиляции рекурсивно обходится список типов и вызывается функция. Так вот там аналогичным образом IAR просто делает одно и то-же: кладет в стек, грузит в А, кладет в стек, грузит в А.... В то время как GCC просто взял и прошелся одним значением по всем вызовам(ибо они реально не меняются и это известно во время компиляции).
В общем печаль полнейшая с этим IAR.... Обидно, что кроме него плюсы никто не поддерживает больше.

Sdcc снапшот от 9 мая
sdcc -mstm8 --std-c99 --opt-code-size main.c
вариант с asm(nop)
функциa объявлена как static inline dly(char i);
Код
      000000                         81 _dly:
                                     82;    main.c: 3: while(--i)
      000000 7B 03            [ 1]   83     ld    a, (0x03, sp)
      000002                         84 00101$:
      000002 4A               [ 1]   85     dec    a
      000003 4D               [ 1]   86     tnz    a
      000004 26 01            [ 1]   87     jrne    00115$
      000006 81               [ 4]   88     ret
      000007                         89 00115$:
                                     90;    main.c: 4: __asm__("nop");
      000007 9D               [ 1]   91     nop
      000008 20 F8            [ 2]   92     jra    00101$
      00000A 81               [ 4]   93     ret
                                     94;    main.c: 7: void main(void)
                                     95;    -----------------------------------------
                                     96;     function main
                                     97;    -----------------------------------------
      00000B                         98 _main:
                                     99;    main.c: 3: while(--i)
      00000B A6 0A            [ 1]  100     ld    a, #0x0a
      00000D                        101 00101$:
      00000D 4A               [ 1]  102     dec    a
      00000E 4D               [ 1]  103     tnz    a
      00000F 26 01            [ 1]  104     jrne    00116$
      000011 81               [ 4]  105     ret
      000012                        106 00116$:
                                    107;    main.c: 4: __asm__("nop");
      000012 9D               [ 1]  108     nop
      000013 20 F8            [ 2]  109     jra    00101$
                                    110;    main.c: 9: dly(10);
      000015 81               [ 4]  111     ret


ЗАИНЛАЙНИЛ БЛИН..... sad.gif sad.gif sad.gif sad.gif sad.gif sad.gif IAR при инлайне хоть тело функции догадывается убрать....


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- sigmaN   Я просто не верю что IAR STM8 такой тупой!   May 9 2017, 20:00
- - jcxz   Цитата(sigmaN @ May 9 2017, 22:00) Cosmic...   May 9 2017, 20:57
- - AHTOXA   Посмотрите, что из вашего кода делает sdcc, и успо...   May 10 2017, 06:51
|- - Эдди   Цитата(AHTOXA @ May 10 2017, 09:51) Посмо...   May 11 2017, 11:52
|- - jcxz   Цитата(sigmaN @ May 10 2017, 12:01) Груст...   May 10 2017, 12:44
- - sigmaN   Цели никакой нет и холливара тоже. Просто обидно ч...   May 10 2017, 13:13
|- - AHTOXA   А как, по-вашему, должен выглядеть предложенный ва...   May 10 2017, 18:21
|- - jcxz   Цитата(sigmaN @ May 10 2017, 15:13) Прост...   May 10 2017, 20:01
- - sigmaN   Выглядеть этот кусок может и должен в точности как...   May 11 2017, 01:54
|- - AHTOXA   Цитата(sigmaN @ May 11 2017, 06:54) Выгля...   May 11 2017, 06:20
|- - jcxz   Цитата(sigmaN @ May 11 2017, 03:54) Приде...   May 11 2017, 08:38
- - sigmaN   Тоже потом подумал про испорченный A. Однако же ни...   May 11 2017, 08:34
- - sigmaN   ЦитатаПриведите лучше пример реализации БИХ-фильтр...   May 11 2017, 10:24
|- - AHTOXA   Цитата(sigmaN @ May 11 2017, 15:24) Удиви...   May 11 2017, 14:00
|- - Михась   Цитата(AHTOXA @ May 11 2017, 20:00) Раз у...   May 11 2017, 14:37
|- - AHTOXA   Цитата(Михась @ May 11 2017, 19:37) Это ...   May 11 2017, 17:05
|- - Михась   Цитата(AHTOXA @ May 12 2017, 00:05) Это н...   May 12 2017, 03:40
- - sigmaN   Cosmic для стм8 нынче абсолютно свободен и без огр...   May 11 2017, 13:15
- - Эдди   Космик только под мастдайку — не годится.   May 11 2017, 13:24
- - sigmaN   Странно, но космик в удобном виде размеры не вывод...   May 12 2017, 10:44
- - sigmaN   Мой товарищ сделал задержку 1us вот таким не хитры...   May 13 2017, 17:35
|- - jcxz   Цитата(sigmaN @ May 13 2017, 19:35) Рассл...   May 14 2017, 06:05
|- - Den64   Цитата(jcxz @ May 14 2017, 09:05) Не поня...   May 14 2017, 06:39
|- - jcxz   Цитата(Den64 @ May 14 2017, 08:39) Нескол...   May 14 2017, 18:36
|- - Den64   Цитата(jcxz @ May 14 2017, 21:36) Это пон...   May 14 2017, 18:59
- - sigmaN   ЦитатаЭто из игры fallout. Что это за приложение д...   May 14 2017, 20:17
|- - AHTOXA   Мне фотки видны. Он заменил 16 nop-ов на два вызов...   May 14 2017, 21:16
|- - jcxz   Цитата(sigmaN @ May 14 2017, 22:17) Короч...   May 15 2017, 09:38
- - sigmaN   Да, я тоже перепроверил, времянка не соблюдена. Дл...   May 14 2017, 21:27
- - sigmaN   Как раз эта часть отлично описана в посте со скрин...   May 15 2017, 14:15
|- - jcxz   Да похоже так и есть - реально тупой Функцию, ...   Jun 12 2017, 13:36
- - Эдди   Синус на STM8? Зачем????????????????   Jun 12 2017, 14:43
|- - jcxz   Цитата(Эдди @ Jun 12 2017, 16:43) Синус н...   Jun 12 2017, 17:27
- - Эдди   ШИМ — штука хорошая, но синусоида элементарно по т...   Jun 13 2017, 05:25
|- - jcxz   Цитата(Эдди @ Jun 13 2017, 07:25) ШИМ ...   Jun 13 2017, 06:26
- - jcxz   Цитата(sigmaN @ May 9 2017, 23:00) ЗАЧЕМ?...   Jul 25 2017, 11:44
- - sigmaN   ммм, неплохо, неплохо! Затестим обязательно...   Jul 26 2017, 19:26
- - VladislavS   Пример из первого сообщения. STM8 Series 3.10.1 Ка...   Jul 31 2017, 05:53


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th July 2025 - 03:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01449 секунд с 7
ELECTRONIX ©2004-2016