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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Я просто не верю что IAR STM8 такой тупой!, Ведь это же всегда был один из самых качественных компиляторов
Эдди
сообщение May 11 2017, 13:24
Сообщение #16


Знающий
****

Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



Космик только под мастдайку — не годится.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение May 11 2017, 14:00
Сообщение #17


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(sigmaN @ May 11 2017, 15:24) *
Удивительно, но при раздутом размере IAR по тактам таки победил
19498 тактов у IAR
19929 Cosmic

Раз уж вы взялись тестировать, то укажите и полученный размер. (Ну и добавьте sdcc, для полноты картины).


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Михась
сообщение May 11 2017, 14:37
Сообщение #18


Частый гость
**

Группа: Участник
Сообщений: 161
Регистрация: 29-09-10
Пользователь №: 59 816



Цитата(AHTOXA @ May 11 2017, 20:00) *
Раз уж вы взялись тестировать, то укажите и полученный размер. (Ну и добавьте sdcc, для полноты картины).


Кейл V5

Cortex-М0 L3 2673мт
Program Size: Code=308 RO-data=224 RW-data=16 ZI-data=1152


Cortex-М3 L3 1651мт
Program Size: Code=304 RO-data=224 RW-data=16 ZI-data=1152

Сообщение отредактировал Михась - May 11 2017, 14:39
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение May 11 2017, 17:05
Сообщение #19


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(Михась @ May 11 2017, 19:37) *

Это немного не то, интересны именно компиляторы для STM8.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Михась
сообщение May 12 2017, 03:40
Сообщение #20


Частый гость
**

Группа: Участник
Сообщений: 161
Регистрация: 29-09-10
Пользователь №: 59 816



Цитата(AHTOXA @ May 12 2017, 00:05) *
Это немного не то, интересны именно компиляторы для STM8.


Это да, просто хотел получить некоторую калибровочную точку на основе широко распространенной архитектуры sm.gif


Компилятор RIDE51 6.4 для 8052 показал время выполнения 1,1 сек на частоте 1МГц с оптимизацией по скорости и 3,3 сек с оптимизацией по объему. Прогресс внушает!!

Keil C51 8052 L7
52 632 тактов
Program Size: data=114.0 xdata=0 code=1228

Сообщение отредактировал Михась - May 12 2017, 15:41
Go to the top of the page
 
+Quote Post
sigmaN
сообщение May 12 2017, 10:44
Сообщение #21


I WANT TO BELIEVE
******

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



Странно, но космик в удобном виде размеры не выводит.
короче сравниваем .text я так понимаю
Cosmic 574 байта
Код
                               --------
                               Segments
                               --------

start 00008080 end 0000808c length    12 segment .const
start 0000808f end 000082cd length   574 segment .text
start 00004000 end 00004000 length     0 segment .eeprom
start 00000000 end 00000000 length     0 segment .bsct
start 00000000 end 00000096 length   150 segment .ubsct
start 00000096 end 00000096 length     0 segment .bit
start 00000096 end 00000096 length     0 segment .share
start 00000100 end 00000100 length     0 segment .data
start 00000100 end 00000100 length     0 segment .bss
start 00000000 end 0000036c length   876 segment .info.
start 00000000 end 000003ca length   970 segment .debug
start 00008000 end 00008080 length   128 segment .const
start 0000808c end 0000808f length     3 segment .init


IAR 635байт
Код
"P3":                                 0x27b
  .near_func.text  ro code  0x008080  0x14c  main.o [1]
  .near_func.text  ro code  0x0081cc   0xcc  long.o [4]
  .iar.init_table  const    0x008298    0x8  - Linker created -
  .near_func.text  ro code  0x0082a0   0x1e  init_small.o [4]
  .near_func.text  ro code  0x0082be   0x17  init.o [4]
  .near_func.text  ro code  0x0082d5   0x13  cstartup.o [4]
  .near_func.text  ro code  0x0082e8    0x5  cexit.o [4]
  .near_func.text  ro code  0x0082ed    0x3  interrupt.o [4]
  .near_func.text  ro code  0x0082f0    0x3  low_level_init.o [4]
  .near_func.text  ro code  0x0082f3    0x3  exit.o [4]
  .near_func.text  ro code  0x0082f6    0x3  unhandled_exception.o [4]
  .near_func.text  ro code  0x0082f9    0x2  xxexit.o [3]
                          - 0x0082fb  0x27b


SDCC что-то не сдюжил....
D:\Poligon\FIR_TEST\sdcc>sdcc -lstm8 -mstm8 --out-fmt-elf main.c
main.c:126: error 9: FATAL Compiler Internal Error in file '/home/sdcc-builder/build/sdcc-build/orig/sdcc/src/SDCCopt.c' line number '805' : 0
Contact Author with source code
Странно, строка 126 в тестовом файле это for (i=0;i<N;i++)

в общем тут в этом посте есть исходник теста, каждый может по развлекаться и сравнить лично https://electronix.ru/forum/index.php?s=&am...t&p=1498198

Вот даже готовые проекты для IAR, STVD и AVR Studio 7 Можно с опциями оптимизации поиграться на досуге
https://drive.google.com/file/d/0B7dMRxCEo4...iew?usp=sharing


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
sigmaN
сообщение May 13 2017, 17:35
Сообщение #22


I WANT TO BELIEVE
******

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



Мой товарищ сделал задержку 1us вот таким не хитрым способом
Код
#define ONE_US_DELAY nop();nop();nop();nop();nop();nop();nop();nop();nop();nop();nop();nop();nop();nop();nop();nop()

Этот nop() есть ни что иное как макрос разворачивающийся в asm("nop")

Ну а я себе на асме сделал C Callable функцию с пустым циклом и предложил ему отказаться от его метода, который занимает 17байт на каждую задержку(коих в коде у него было около десятка). В пользу моего более гибкого варианта, дающего задержки от микросекунд до миллисекунд.
Но.... Внимание. Когда он заменил это на вызов моей функции - размер кода даже незначительно увеличился! О___о
Расследование показало удивительный факт: его макрос превратился в вызов функции и если шагнуть в вызов то, внимание, барабанная дробь


Вы представляете, IAR даже посчитал оверхед на CALL / RET и уменьшил кол-во нопов в теле этой автогенерированной функции!

Как выяснилось позднее, за это дело ответственна оптимизация CrossCall, которую можно включить в настройках...
Вот так проявляется породистость компилятора, которую хочется отметить даже не смотря на некоторые явные недоработки для этой архитектуры


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 14 2017, 06:05
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(sigmaN @ May 13 2017, 19:35) *
Расследование показало удивительный факт: его макрос превратился в вызов функции и если шагнуть в вызов то, внимание, барабанная дробь

Не понятно - что именно IAR заменил?
Go to the top of the page
 
+Quote Post
Den64
сообщение May 14 2017, 06:39
Сообщение #24


Знающий
****

Группа: Свой
Сообщений: 584
Регистрация: 22-11-07
Из: Курская область
Пользователь №: 32 571



Цитата(jcxz @ May 14 2017, 09:05) *
Не понятно - что именно IAR заменил?

Несколько nop * 16 на подпрограмму.
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 14 2017, 18:36
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Den64 @ May 14 2017, 08:39) *
Несколько nop * 16 на подпрограмму.

Это понятно. Вопрос про их количество. И как выглядел макрос.
Go to the top of the page
 
+Quote Post
Den64
сообщение May 14 2017, 18:59
Сообщение #26


Знающий
****

Группа: Свой
Сообщений: 584
Регистрация: 22-11-07
Из: Курская область
Пользователь №: 32 571



Цитата(jcxz @ May 14 2017, 21:36) *
Это понятно. Вопрос про их количество. И как выглядел макрос.

Их количество такое что выполнение подпрограммы займёт 1мкС. Хотя такое впечатление что NOPов маловато. Хотя может быть и достаточно.

Не заметил что подпрограмма вызывается дважды. Тогда выполнение займёт больше 1 мкС.

Прикрепленное изображение

Это из игры fallout. Что это за приложение для stm8? biggrin.gif
Go to the top of the page
 
+Quote Post
sigmaN
сообщение May 14 2017, 20:17
Сообщение #27


I WANT TO BELIEVE
******

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



Цитата
Это из игры fallout. Что это за приложение для stm8? biggrin.gif
Да кто ж его знает, они там игровую муть всякую делают.....

Хм, кстати да, там же откуда-то второй CALL еще взялся.
Короче надо будет исследовать это дело. Но то что он превратил макрос в функцию и вызывал ее - это 100%. По поводу уменьшения кол-ва нопов точных подсчетов я не проводил, но то что их меньше чем 16шт было - это тоже очевидно. Кажется на CALL/RET оверхед должен быть тактов 8, если мне не изменяет склероз. Соответственно нопов должно быть тоже 8 штук.

Add: блин, были ссылки на фотки из vk. Что-то там умерло, скриншоты пропали smile3046.gif В самом vk эта фотка тоже щас не открывается. Что-то упало у них там...потом думаю восстановится само.


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение May 14 2017, 21:16
Сообщение #28


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Мне фотки видны.
Он заменил 16 nop-ов на два вызова подпрограммы, которая содержит 8 nop-ов. Так что времянка не соблюдена, тут чуда не произошло. (А я уж сначала подумал, что IAR освоил телепатический режимsm.gif)


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
sigmaN
сообщение May 14 2017, 21:27
Сообщение #29


I WANT TO BELIEVE
******

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



Да, я тоже перепроверил, времянка не соблюдена. Для экономии места он просто разбил их на два вызова по 8 нопов. Я тогда во время первого расследования не заметил второго вызова и че-то решил, что это у IARа какой-то заранее запрограммированный вариант оптимизации таких задержек )))


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 15 2017, 09:38
Сообщение #30


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(sigmaN @ May 14 2017, 22:17) *
Короче надо будет исследовать это дело. Но то что он превратил макрос в функцию и вызывал ее - это 100%. По поводу уменьшения кол-ва нопов точных подсчетов я не проводил, но то что их меньше чем 16шт было - это тоже очевидно. Кажется на CALL/RET оверхед должен быть тактов 8, если мне не изменяет склероз. Соответственно нопов должно быть тоже 8 штук.

Я Вас просил привести макрос, из которого был сгенерён тот листинг с NOP-ами, приведённый Вами. Иначе просто вообще непонятно оценить, что и из чего Вы получили.
Вы утверждали (как я понял), что IAR якобы уменьшил количество NOP-ов Вашего макроса так, чтобы в результате при оформлении их в п/п, общая задержка этой п/п была == задержке всех NOP-ов исходного макроса. Это крайне сомнительно. Так как для этого IAR-у нужно понимать назначение данного макроса, думать за программиста. smile3046.gif
Поэтому и просил привести исходный макрос. Чтобы например можно было повторить у себя и убедиться (или не убедиться).

Цитата(Den64 @ May 14 2017, 20:59) *
Их количество такое что выполнение подпрограммы займёт 1мкС. Хотя такое впечатление что NOPов маловато. Хотя может быть и достаточно.

Мой вопрос был вообще не про это. См.выше.
Go to the top of the page
 
+Quote Post

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

 


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


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