-
- а на gcc такого добиться нельзя? symbions(247 знак., 21.09.2015 17:43 - 20:26)
- там тоже можно многое, но по данным Atmel размер скомпилированной программы в среднем на 40% больше. AlexG(90 знак., 21.09.2015 17:50)
- Данные устаревшие наверное? Думаю больше на 10-15 %, не больше. Зато по скорости GCC может и обогнать IAR. - Apтём(21.09.2015 17:59)
- Не самые свежие, это пару лет назад было. Оба компилятора на месте не стоят. - AlexG(21.09.2015 18:01)
- Ну может и так - я АВР пару лет как забросил - не слежу больше. - Apтём(21.09.2015 18:18)
- Не самые свежие, это пару лет назад было. Оба компилятора на месте не стоят. - AlexG(21.09.2015 18:01)
- Данные устаревшие наверное? Думаю больше на 10-15 %, не больше. Зато по скорости GCC может и обогнать IAR. - Apтём(21.09.2015 17:59)
- там тоже можно многое, но по данным Atmel размер скомпилированной программы в среднем на 40% больше. AlexG(90 знак., 21.09.2015 17:50)
- ...не освоил IAR для "чего-то там", и не хочу!! :)) Нахрена мне изучать очередные костыли, чтобы якобы оптимально писать с их помощью программы. Ассемблер в этом случае гораздо "честнее" и легче, ибо, пока научишься и писать "оптимальные" Adept(1912 знак., 21.09.2015 18:31 - 18:34)
- "Суха, мой друг, теория везде. А древо жизни пышно зеленеет" (с) Фауст vpv.vpv(2159 знак., 21.09.2015 20:09)
- Какой-то очень сомнительный финт - где сохранение регистров R6-R12? Или их принудительно указано не использовать? Зачем так? - Apтём(22.09.2015 11:47)
- R6-R12 явно и принудительно используются вместо ОЗУ (вместо стека) при входе в прерывания. Их не надо сохранять, они просто как ячейки памяти, доступ к которым очень быстрый. vpv.vpv(203 знак., 24.09.2015 08:35)
- А нужно ли вызывать функции внутри обработчика прерывания, да и ещё к тому же по указателю? И что будет если вызванная функция захочет использовать несохранённые регистры? Программа вылетит? Apтём(149 знак., 24.09.2015 11:25)
- С указателями мне было проще реализовать задуманное. Функции - это короткие и простые действия, и указатели на них я меняю, в зависимости от поведения и состояния системы. Например, прерывание по переполнению таймера, что должно делать? Если вот vpv.vpv(602 знак., 25.09.2015 13:38)
- Т.е Вы сделали свой WDT - ilyaul(25.09.2015 19:12)
- С указателями мне было проще реализовать задуманное. Функции - это короткие и простые действия, и указатели на них я меняю, в зависимости от поведения и состояния системы. Например, прерывание по переполнению таймера, что должно делать? Если вот vpv.vpv(602 знак., 25.09.2015 13:38)
- А нужно ли вызывать функции внутри обработчика прерывания, да и ещё к тому же по указателю? И что будет если вызванная функция захочет использовать несохранённые регистры? Программа вылетит? Apтём(149 знак., 24.09.2015 11:25)
- R6-R12 явно и принудительно используются вместо ОЗУ (вместо стека) при входе в прерывания. Их не надо сохранять, они просто как ячейки памяти, доступ к которым очень быстрый. vpv.vpv(203 знак., 24.09.2015 08:35)
- Интересно. А Аналог такого сделать symbions(383 знак., 21.09.2015 20:33)
- идейно я против, но как раз сейчас в цеху клепают железяки которых я писал почти также :) Nikolay801_(503 знак., 24.09.2015 09:27)
- Угу. Скрипач(114 знак., 24.09.2015 10:05)
- тока инлайн носит чисто рекомендательный характер и захочет или нет его использовать загадочный резонансовый компилятор не известно. А мне это лишний call, ну категорически не нужон, а если еще задумает регистры в стек попихать, так ваще Nikolay801_(69 знак., 24.09.2015 10:18 - 10:22)
- Смирись. Компилятор в своём праве. Ну или обложи его
матом__attribute__((inline_force)) - Скрипач(24.09.2015 10:27) - Если нужно, чтобы код гарантированно что-то успевал, Си плохо подходит. Ведь должен быть способ гарантировать, что сгенерированный код годный. А как? Смотреть в листинг и считать такты? Гонять тест на железе? Причём после каждой компиляции. SciFi(29 знак., 24.09.2015 10:26)
- Я те попытаюсь абиснить адын умный весч, тока ты не абижайся. "Гарантированно что-то(ага, что именно?) успевал". Ты сам понял, чо накатал? _basile(299 знак., 25.09.2015 21:12, )
- Да я тоже за всё хорошее и против всего плохого, не кипятись ты так :-) - SciFi(25.09.2015 22:30)
- Ну в общем действительно для решения реалтайм-задач
всегдаобычно используют аппаратные фичи (таймеры, прерывания и т.п.) а уж каким раком там хэндлеры написаны, на сях ли, на асме, большой рояли не играет. Adept(512 знак., 25.09.2015 21:29)- Вот и сошлись... Хотя, я немного не про это. Я хотел сказать, что при современном уровне развития железа программеров можно на**й послать. Не, не обижайтесь, это - так, _basile(223 знак., 25.09.2015 21:45, )
- Вертишься, как уж на сковородке :) - Скрипач(25.09.2015 21:37)
- Ну я видимо в отличие от вас не зомбирован в секте си-адептов :) просто мне асссемблер ближе, понятнее и приятнее. Я дофига могу чего на нём сделать. Меня всё устраивает. Но кого-то там агитировать и склонять куда бы то ни было не собираюсь. и уж Adept(326 знак., 25.09.2015 21:44 - 21:46)
- Просто я - ватник. Скрипач(748 знак., 25.09.2015 21:50 - 28.09.2015 15:42)
- ладно, проехали, чего уж тут пикироваться по дурацким поводам. Извиняете, ежели что. - Adept(25.09.2015 22:15)
- Не, просто ты мне объясни. Ассемблер те ближе. А какого проца ассемблер ближе? Вот, мне ближе асм 8051. Но, прикинь, я в разработки это говно мамонта засовывовувать буду ? _basile(124 знак., 25.09.2015 21:56, )
- да по барабану какой. ассемблеры не сильно друг от друга отличаются, даже если сравнивать МК и процессоры. Если МК не обременён сильно сложной периферией, то ассемблер практически одинаков (по смыслу инструкций) для всех процев. Вот на XMEGE уже с Adept(999 знак., 25.09.2015 22:12)
- ассемблеры не отличаются? Вот штоб тебе пришлось переводить асмовый сырец с 51 на пик18 и в сроки не сколько реально надо, а за вечер, так как "они одинаковые". - Nikolay801_(29.09.2015 08:54)
- 51-й - УГ! чего только стоит страничная адресация памяти, про атавизм типа аккумулятора - промолчим :), но, тем не мене Adept(360 знак., 29.09.2015 15:16 - 15:20)
- Мне пришлось как-то переносить код с Z80 на PIC14000 (PIC16). И что с того? - Bill(29.09.2015 12:19)
- за вечер? - Nikolay801_(29.09.2015 12:59)
- Легче заново написать - ilyaul(29.09.2015 08:58)
- ассемблеры не отличаются? Вот штоб тебе пришлось переводить асмовый сырец с 51 на пик18 и в сроки не сколько реально надо, а за вечер, так как "они одинаковые". - Nikolay801_(29.09.2015 08:54)
- да по барабану какой. ассемблеры не сильно друг от друга отличаются, даже если сравнивать МК и процессоры. Если МК не обременён сильно сложной периферией, то ассемблер практически одинаков (по смыслу инструкций) для всех процев. Вот на XMEGE уже с Adept(999 знак., 25.09.2015 22:12)
- Просто я - ватник. Скрипач(748 знак., 25.09.2015 21:50 - 28.09.2015 15:42)
- Ну я видимо в отличие от вас не зомбирован в секте си-адептов :) просто мне асссемблер ближе, понятнее и приятнее. Я дофига могу чего на нём сделать. Меня всё устраивает. Но кого-то там агитировать и склонять куда бы то ни было не собираюсь. и уж Adept(326 знак., 25.09.2015 21:44 - 21:46)
- Я те попытаюсь абиснить адын умный весч, тока ты не абижайся. "Гарантированно что-то(ага, что именно?) успевал". Ты сам понял, чо накатал? _basile(299 знак., 25.09.2015 21:12, )
- Смирись. Компилятор в своём праве. Ну или обложи его
- тока инлайн носит чисто рекомендательный характер и захочет или нет его использовать загадочный резонансовый компилятор не известно. А мне это лишний call, ну категорически не нужон, а если еще задумает регистры в стек попихать, так ваще Nikolay801_(69 знак., 24.09.2015 10:18 - 10:22)
- Угу. Скрипач(114 знак., 24.09.2015 10:05)
- нечто подобное можно сделать свичем, но это не совсем прямая аналогия Nikolay801_(122 знак., 24.09.2015 09:17)
- Ниччо не понял. :) vpv.vpv(260 знак., 22.09.2015 09:30)
- две функции, одна из которых почти не отличается от другой. Ну или как написал AlexG - функция, у которой 2 разные точки входа. Где я подсмотрел оригинал - не помню, у себя использовал немного по другому. symbions(989 знак., 22.09.2015 23:42)
- Кстати, эту функцию можно чуть-чуть упростить, если Bill(34 знак., 24.09.2015 14:33)
- У меня она вызывается из разных мест, а не с одного. Как указывать куда возвращаться? - symbions(25.09.2015 09:45)
- Она вернется туда, откуда ее вызвали. Подумайте хорошенько. Или надо разъяснить? - Bill(25.09.2015 13:20)
- Да. symbions(1120 знак., 25.09.2015 13:32)
- Я не то имел в виду. Bill(182 знак., 25.09.2015 13:43)
- А она вообще нужна там эта dlitI2C? Он все передал , вернул SDA в 1 и просто ret. Чего ещё ждать? - ilyaul(26.09.2015 00:51)
- честно говоря не помню - перетащил с другого проекта, где в конце перед ретом стояло 6 нопов. А в остальной подпрограмме точно нужна - зхадержку делает - symbions(27.09.2015 20:51)
- Про задержку я понял, никаких вопросов. А вот сколько тактов проходит от setb I2Csda до возврата в FUNC out1 не ясно , может и не нужна эта задержка. - ilyaul(27.09.2015 22:09)
- 8 тактов. Скорее всего не нужна- но уж переделовать точно не буду, смысла нет - symbions(28.09.2015 22:38)
- Про задержку я понял, никаких вопросов. А вот сколько тактов проходит от setb I2Csda до возврата в FUNC out1 не ясно , может и не нужна эта задержка. - ilyaul(27.09.2015 22:09)
- честно говоря не помню - перетащил с другого проекта, где в конце перед ретом стояло 6 нопов. А в остальной подпрограмме точно нужна - зхадержку делает - symbions(27.09.2015 20:51)
- А, согласен. symbions(404 знак., 26.09.2015 00:31)
- А она вообще нужна там эта dlitI2C? Он все передал , вернул SDA в 1 и просто ret. Чего ещё ждать? - ilyaul(26.09.2015 00:51)
- Я не то имел в виду. Bill(182 знак., 25.09.2015 13:43)
- Вы вроде бы прекращали преподавательскую деятельность. Уже безусловный рефлекс? :-) - SciFi(25.09.2015 13:22)
- А причем тут преподавательская деятельность? Это, скорее, деятельность инженерная. Или нет? - Bill(25.09.2015 13:28)
- Ну вот это: подумайте хорошенько,
до конца экзамена ещё есть время:-) - SciFi(25.09.2015 13:31)- :-))) - Bill(25.09.2015 13:47)
- Ну вот это: подумайте хорошенько,
- А причем тут преподавательская деятельность? Это, скорее, деятельность инженерная. Или нет? - Bill(25.09.2015 13:28)
- Да. symbions(1120 знак., 25.09.2015 13:32)
- Она вернется туда, откуда ее вызвали. Подумайте хорошенько. Или надо разъяснить? - Bill(25.09.2015 13:20)
- У меня она вызывается из разных мест, а не с одного. Как указывать куда возвращаться? - symbions(25.09.2015 09:45)
- В случае с IAR я просто пишу эти две функции, как они есть, и не парюсь. Компилятор сам видит общие куски кода, и сам их оптимизирует как надо (если ему указать на оптимизацию). Достаточно посмотреть ассемблерный листинг, там всё это видно. - vpv.vpv(24.09.2015 08:45)
- Хорошо, если это так. - symbions(24.09.2015 11:04)
- Кстати, эту функцию можно чуть-чуть упростить, если Bill(34 знак., 24.09.2015 14:33)
- Речь про функцию у которой две разных точки входа - AlexG_(22.09.2015 09:42, )
- В приведенном примере нет никакого смысла, поэтому и непонятно. - Bill(22.09.2015 12:10)
- Компилятор сам, иногда, о таком догадывается. Чтобы "подсказать", общий блок объявите inline функцией и вызывайте из двух функций. - Скрипач(22.09.2015 10:12)
- Надо попробовать. symbions(56 знак., 22.09.2015 23:36)
- две функции, одна из которых почти не отличается от другой. Ну или как написал AlexG - функция, у которой 2 разные точки входа. Где я подсмотрел оригинал - не помню, у себя использовал немного по другому. symbions(989 знак., 22.09.2015 23:42)
- идейно я против, но как раз сейчас в цеху клепают железяки которых я писал почти также :) Nikolay801_(503 знак., 24.09.2015 09:27)
- Какой-то очень сомнительный финт - где сохранение регистров R6-R12? Или их принудительно указано не использовать? Зачем так? - Apтём(22.09.2015 11:47)
- "Суха, мой друг, теория везде. А древо жизни пышно зеленеет" (с) Фауст vpv.vpv(2159 знак., 21.09.2015 20:09)
- а на gcc такого добиться нельзя? symbions(247 знак., 21.09.2015 17:43 - 20:26)