Страница 2 из 2
Re: Использование особенностей GCC для повышения комфорта
Добавлено: Вт июн 20, 2017 13:24:29
arkhnchul
[uquote="YS",url="/forum/viewtopic.php?p=3129878#p3129878"]желание использовать SDCC у меня отпало когда я дочитал документацию по нему примерно до половины[/uquote]
если не секрет - что там было такого страшного, кроме туповатого линкера?
Re: Использование особенностей GCC для повышения комфорта
Добавлено: Вт июн 20, 2017 13:51:37
ARV
YS писал(а):о кросс-платформенности думать приходится, чтобы при необходимости использовать код коллег и делиться с ними своим кодом
в этой фразе - ключ к пониманию моего подхода. я работаю на себя, для себя и так, как хочу сам. я не связан по рукам и ногам разнообразием платформ - я развлекаюсь исключительно с AVR. весьма зыбкие планы приступить к играм с ARM, если вдруг решусь, то буду так же при помощи GCC делать.
призываю всех всегда помнить, на каком сайте мы все общаемся и намеренно приземлять полет своих крылатых мыслей до уровня любителя. я, как любитель, уже далеко не все могу понять, а я ведь всё-таки не совсем неуч... чего уж говорить о любителях генерировать код визардами?!
Re: Использование особенностей GCC для повышения комфорта
Добавлено: Вт июн 20, 2017 23:18:20
YS
Я, кстати, тоже по возможности использую GCC, и коллег, работающих со мной наиболее тесно, на него почти перетянул.
Единственно, как я уже говорил, меня очень огорчает отсутствие поддержки STM8. Правда, STM8 хороши по большей части ценой, из них я склонен использовать только младшие кристаллы.
если не секрет - что там было такого страшного, кроме туповатого линкера?
У него странная система вызовов, диковинные форматы файлов, неполная поддержка стандарта - это то, что помнится навскидку.

А еще у меня возникло ощущение, что STM8 туда прикручивали по остаточному принципу.
чего уж говорить о любителях генерировать код визардами?!
Я скажу по секрету, что у нас среди разработчиков тоже есть любители генерировать код визардами.

Это создает отдельные проблемы.

Re: Использование особенностей GCC для повышения комфорта
Добавлено: Ср июн 21, 2017 01:37:53
arkhnchul
[uquote="YS",url="/forum/viewtopic.php?p=3130142#p3130142"]А еще у меня возникло ощущение, что STM8 туда прикручивали по остаточному принципу[/uquote]
вообще да) сначала он был под mcs-51, потом прикрутили z80, затем pic-и, еще чего-то. Порт stm8 емнип пилят полтора землекопа.
Re: Использование особенностей GCC для повышения комфорта
Добавлено: Ср июн 21, 2017 07:08:15
oleg110592
[uquote="YS",url="/forum/viewtopic.php?p=3130142#p3130142"]У него странная система вызовов, диковинные форматы файлов, неполная поддержка стандарта - это то, что помнится навскидку.

А еще у меня возникло ощущение, что STM8 туда прикручивали по остаточному принципу.[/uquote]
попробуйте последний snapshot. Недавно делал проектик SDCC STM8 - код без правок копипастил для сравнения в ИАР, ИАР на ~100 байт меньше размер сделал. Оба варианта одинаково в железе работают. Никаких негативных ощущений не возникло, единственное SDCC при работе с битами периферии чудит (4 команды вместо bset/bres), решается проблема дополнительным peep файликом.
А по теме - GCC нынче "расширился" значительно, что иногда проще не переносить чужой код в другой компилятор. А GCC для микроконтроллеров сейчас делает вполне компактный выхлоп.
https://habrahabr.ru/post/315676/
Re: Использование особенностей GCC для повышения комфорта
Добавлено: Ср июн 21, 2017 07:32:41
ARV
oleg110592 писал(а):GCC нынче "расширился" значительно
жалко, что до сих пор для AVR не сделали пространство имен __eeprom аналогично тому, как сделали __flash.
Re: Использование особенностей GCC для повышения комфорта
Добавлено: Пт июл 07, 2017 04:25:14
pokk
ARV, по поводу трасировки, так как у вас дефайн log_i из кода, убираеться ?
Если он находится в debug.h то в релизной версии убирается и начинается ругань компилятора на неизвестную конструкцию. Как то так?
Код: Выделить всё
#if defined(__DEBUG__)
void debuf_func(void);
#define log_i(x) printf_P(PSTR("\nLOG> " __FILE__ "\%s:%04d " # x "=%d\n"), __FUNCTION__, __LINE__, x)
#else
#define debug_func()
#define log_i(x)
#endif
Re: Использование особенностей GCC для повышения комфорта
Добавлено: Пт июл 07, 2017 06:43:25
ARV
если макрос __DEBUG__ не определен, то все автоматически и убирается, ничего больше делать не надо.
Re: Использование особенностей GCC для повышения комфорта
Добавлено: Пт июл 07, 2017 11:07:01
pokk
Так так а вот про это по подробнее, как она автоматически убирается?
Допустим я использовал макрос log_i(x) где-то в майне, так вот после того как
выключаем макрос __DEBUG__ определение макроса log_i(x) убирается, при этом на пустую заглушку не изменяться.
по этому компилятор и выдаст ошибку на неизвестный дефайн(log_i(x)) так как он выключился.
PS:GCC не пользовался ни разу.
Re: Использование особенностей GCC для повышения комфорта
Добавлено: Пт июл 07, 2017 11:23:21
ARV
все макросы log_xxx продефайнены именно в обертке #if defined(__DEBUG__), поэтому при отсутствии этого макроса должны подставляться пустышки.