-
- "ты просто не освоил Си должным образом." - именно так! vpv.vpv(890 знак., 21.09.2015 16:50)
- а на 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)
- да, серьёзно системно на Си не программировал, так были кое-какие прикладные задачи. Вообще много через что прошёл (бейсики/фортраны/паскали/языки баз данных, си, в конце-концов. всё это было на разных компьютерах. Когда добрался до МК Adept(2142 знак., 10.09.2015 11:50)
- Много ты накатал. А вот я "за достаточно приличный срок своей деятельности крайне редко встречал необходимость в применении" асма. _basile(408 знак., 10.09.2015 12:10, )
- программы пишутся не на языках, а в алгоритмах. хорошая программа - правильной структуры, в первую очередь. потому, говнокод обычно присущ как раз высокоуровневым программерам (не путать с высококлассными), ибо ленятся сделать красиво и правильно. Adept(2517 знак., 10.09.2015 12:57)
- Это не философия, это - религия. У меня на прежней работе шеф был, все говорил: "Да я это на асме могу написать". А когда до реального дела дошло, он до 12-ти ночи на колупался со своим асмом. А был случай, когда поц, окончивший Бауманку, наваял _basile(222 знак., 10.09.2015 13:20, )
- глупо писать благоглупости про обработчики прерываний без сохранения контента, и представлять таких горе - программистов, как якобы жертв программирования на асме. А по поводу железа - проповедую принцип необходимости и достаточности. Если можно Adept(874 знак., 10.09.2015 13:37)
- Ты малость не понял. Поц был не программер, а начальник сектора разработки... _basile(583 знак., 25.09.2015 19:53, )
- Полностью согласен!! Если есть наработки и нравится, то ASM чем плох? Вот мне очень понравился STM8 и почему-то очень и очень мало кто пишет программы для него на асме, а ведь многие команды в сях переводятся всего в одну команду в асме Zikon(385 знак., 11.09.2015 11:37)
- Помнится народ жаловался на то что в STM8 время выполнения одинаковых команд в циклах постоянно меняется из-за конвеера. - AlexG(12.09.2015 09:47)
- Ну что же... Мне нравится AT89C**, но работаю с АРМ, ибо нет смысла отрицать очевидные плюсы новых архитектур и написания ПО на Си. А что касается лени- это двигатель прогресса, если в прогресс, конечно, можно верить. И прелесть Си вовсе не в _KLIM83(313 знак., 10.09.2015 14:00, )
- Ну да, Адепт еще и TCP IP стек будет сам на асме ваять,хрен ли чужие либы изучать. - _basile(10.09.2015 21:06, )
- нахера его ваять, я в другой нише работаю. Нужен стек - прикрути готовое аппартное хоть вайфай, хоть эзернет. :) мне это скучно и неинтересно. Гораздо интереснее порешать всякие головоломочки, поработать над схемотехникой, найти оригинальное Adept(76 знак., 10.09.2015 22:40)
- спорить не буду, ибо глупо. Для Вас, очевидно так и есть, для меня - некоторым образом наоборот. И потом, если заметите, я не против Си. Пусть программисты ваяют на чём угодно, хоть на брейнфаке, гланое - умение, компетентность и мастерство, а Adept(1144 знак., 10.09.2015 14:27)
- Главное - результат, причем еще вчера. А 3 недели на разборку чужого протокола без документации. Ты сам-то смог бы быстрее ? А то, что твои асмовские исходники чуваки так и не осилили о многом говорит... - _basile(10.09.2015 21:18, )
- Как только объем и сложность кода и структур обрабатываемых данных переходит через порог, необходима смена языка. У всех он свой, но всё равно примерно одинаковый :) У чуваков, например, писавших в свое время для PDP-11, было сперва 80К (с Хитрый Китаец(64 знак., 10.09.2015 21:07)
- TSX 6 Plus почти вся на асме написана. До сих пор лежат ленты с исходниками и стопка книжек с описанием системных вызовов и примеров программ на асме. Исходники очень качественно откомментированы. Да и RT11 тоже вся на асме. - alex68(10.09.2015 21:25)
- Хорошая, кстати операционка была, поинтереснее CP/M и иже с ней :)) Ну и дековская архитектура тоже была интересна/ - Adept(10.09.2015 22:43)
- "Была" несколько преждевременно говорить. У меня есть серьезные подозрения что она все еще в ходу кое-где. - AlexG(12.09.2015 09:38)
- А то :) Все еще лежат в коробочке и ВМ2 и ВМ3, ну и всякие мелкосхемы обвязки. Может сделать плату расширения для писюка и ностальгически запускать там RT11 или TSX... Правда, придется написать дисковый драйвер для них. - alex68(11.09.2015 00:48)
- Хорошая, кстати операционка была, поинтереснее CP/M и иже с ней :)) Ну и дековская архитектура тоже была интересна/ - Adept(10.09.2015 22:43)
- TSX 6 Plus почти вся на асме написана. До сих пор лежат ленты с исходниками и стопка книжек с описанием системных вызовов и примеров программ на асме. Исходники очень качественно откомментированы. Да и RT11 тоже вся на асме. - alex68(10.09.2015 21:25)
- Ну да, Адепт еще и TCP IP стек будет сам на асме ваять,хрен ли чужие либы изучать. - _basile(10.09.2015 21:06, )
- глупо писать благоглупости про обработчики прерываний без сохранения контента, и представлять таких горе - программистов, как якобы жертв программирования на асме. А по поводу железа - проповедую принцип необходимости и достаточности. Если можно Adept(874 знак., 10.09.2015 13:37)
- Это не философия, это - религия. У меня на прежней работе шеф был, все говорил: "Да я это на асме могу написать". А когда до реального дела дошло, он до 12-ти ночи на колупался со своим асмом. А был случай, когда поц, окончивший Бауманку, наваял _basile(222 знак., 10.09.2015 13:20, )
- программы пишутся не на языках, а в алгоритмах. хорошая программа - правильной структуры, в первую очередь. потому, говнокод обычно присущ как раз высокоуровневым программерам (не путать с высококлассными), ибо ленятся сделать красиво и правильно. Adept(2517 знак., 10.09.2015 12:57)
- Не, крутая математика это асм, коллеги приводили пример, там даже количество регистров бывает критично. Графика тоже, даже хороший компилятор не может использовать все возможности железа. А вот выписывать обычную логику на асме скучно. Попробуйте понравится(27 знак., 10.09.2015 12:02, )
- Много ты накатал. А вот я "за достаточно приличный срок своей деятельности крайне редко встречал необходимость в применении" асма. _basile(408 знак., 10.09.2015 12:10, )
- "ты просто не освоил Си должным образом." - именно так! vpv.vpv(890 знак., 21.09.2015 16:50)