-
- Очевидно, код поплыл из-за ошибки в программе или из-за ошибки в
компиляторе (последнее маловероятно). - Nikolay_Po(20.04.2023 14:56)
- Да...тут и всё вкупе может статься. И в исходнике и на выходе компилятора. Например в вышеуказанной v7.4 (при тех же настройках) всё ОК! А с тем же, т.с., "тестом" при тех же "добавках" на той же "конфорке", но на другой версии "плиты"/v8.10/ того же производителя и... "блины пошли комом"! А по какой возможной причине? Ну, например, в сторону SERGHIO(946 знак., 20.04.2023 16:29)
- оптимизацию не трогал. но код в 8.10 уменьшился с ~57 до ~48 кБ.
дальше экспериментировать не буду - снес новую версию. новых
проектов на АВР не планирую, а старые подправить и так получится - Andrey190(20.04.2023 14:24)
- Для меня 8.10 заметно "поумнел" после 7.30. Я по большей части "железячник", мой главный отладчик - листинг. Порой, устав воевать и объяснять компилятору, что мне надо, критичные по скорости секции просто писал на ассемблере. Посмотрел листинги после 8.10 - компилятор всё делает сам, как надо. Жонглирует регистрами, ни одного лишнего телодвижения. Конечно, 7.30 оставил, на всякий случай, но пока у меня с 8.10 все отлично (кроме вертикального сплита :)). - vpv.vpv(25.04.2023 07:40)
- Явно компилятор что-то полезное выкинул раз код так сильно
сократился. Вообще храним версии 5 / 6 / 7 и вот теперь 8 во
избежание... - Chip_n_Go(20.04.2023 15:25, )
- printf выбросил, наверное. :-) - Boвa(22.04.2023 05:58)
- за 25+ лет работы с контроллерами, ни разу не использовал printf. да и другие стандартные по минимуму - Andrey190(22.04.2023 08:37)
- Когда кейл51 выпустил 9.6 компилятор - код ужался на 20кбайт - с
60+ (уже в память не умещалось) до 40. Всё прекрасно работает... POV(207 знак., 20.04.2023 15:33)
- я в основном по этой причине и не использую максимальную оптимизацию. пока памяти хватает... - Andrey190(20.04.2023 15:45)
- Это да. Тенденции компиляторостроения таковы, что компилятор лишь обеспечивает эквивалентный вашему коду "побочный эффект". Результат компиляции может не иметь ничего общего с вашей идеей, будет похож на содержимое файла архива, освобождённое от избыточности. Делает невозможной отладку, но будет соответствовать заданным вами "побочным эффектам" - записям/чтениям регистров периферии и других volatile-областей памяти. - Nikolay_Po(20.04.2023 15:42)
- printf выбросил, наверное. :-) - Boвa(22.04.2023 05:58)
- Я бы не удержался, задержался бы на работе, да раскопал бы до конца
- значит, у меня в программе баг, если смена версии компилятора
ломает программу. Сразу обновляю компилятор, как выходит очередной
релиз - и не имею проблем, только времянки время от времени
контролирую диагностикой осциллографом или анализатором, где
критично. - Nikolay_Po(20.04.2023 14:57)
- если бы проект был живой - я бы так и сделал. на проекте который
закрыт пару лет, и где только исправляются найденные ошибки - не
вижу особого смысла - Andrey190(20.04.2023 15:14)
- Дело хозяйское. Меня вот, ругают за нецелевое расходование рабочего времени на старые проекты, да... :) - Nikolay_Po(20.04.2023 15:15)
- если бы проект был живой - я бы так и сделал. на проекте который
закрыт пару лет, и где только исправляются найденные ошибки - не
вижу особого смысла - Andrey190(20.04.2023 15:14)
- Самое разумное в этой ситуации. Замена компилятора на рабочем проекте несёт риски. Лучше это делать в начале цикла разработки, когда отладка предстоит в любом случае. - SciFi(20.04.2023 14:28)
- Очевидно, код поплыл из-за ошибки в программе или из-за ошибки в
компиляторе (последнее маловероятно). - Nikolay_Po(20.04.2023 14:56)