|
Си для AVR |
|
|
|
Jan 15 2007, 22:26
|
Участник

Группа: Участник
Сообщений: 38
Регистрация: 12-01-07
Из: Крым
Пользователь №: 24 378

|
Здравствуйте , Уважаемые форумчане ! Я на этом форуме пока новенький . С AVR работаю с самого их рождения . На asm сделал огромное кол-во проэктов , и вот теперь хочется посмотреть что же такое Си , и в самом ли деле он так хорош для контроллеров ( и не только ) , сколько о нём восторженных отзывов . Из своего опыта хочу сказать - если программа хорошо продумана идеологически и логически , то всё остальное - дело техники ( и уж если на asm есть глюки , то виноват не asm , а руки ) . Поэтому хочется самому убедиться в его преимуществах ( и естественно недостатках ) . В связи с этим вопрос первый - поделитесь пожалуйста вылеченным IAR ( хочется начать с этого пакета ) , и подскажите пожалуйста хорошую книжку по Си ( желательно конечно на русском , в крайнем случае на английском ), желательно адаптированную для контроллеров , и уж если для AVR , то вообще хорошо . Заранее всем спасибо .
|
|
|
|
|
 |
Ответов
(1 - 77)
|
Jan 15 2007, 23:38
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Цитата(Yuriy_AVR @ Jan 15 2007, 23:26)  Здравствуйте , Уважаемые форумчане ! Я на этом форуме пока новенький . С AVR работаю с самого их рождения . На asm сделал огромное кол-во проэктов , и вот теперь хочется посмотреть что же такое Си , и в самом ли деле он так хорош для контроллеров ( и не только ) , сколько о нём восторженных отзывов . Из своего опыта хочу сказать - если программа хорошо продумана идеологически и логически , то всё остальное - дело техники ( и уж если на asm есть глюки , то виноват не asm , а руки ) . Поэтому хочется самому убедиться в его преимуществах ( и естественно недостатках ) . В связи с этим вопрос первый - поделитесь пожалуйста вылеченным IAR ( хочется начать с этого пакета ) , и подскажите пожалуйста хорошую книжку по Си ( желательно конечно на русском , в крайнем случае на английском ), желательно адаптированную для контроллеров , и уж если для AVR , то вообще хорошо . Заранее всем спасибо . Слово в слово - я.  Начал с Си где то с год назад. Подтвержу все восторженные отзывы. (использовал IAR) Очень жалею что не пробовал раньше. Достоинства - переносимость и наглядность. Красота проги. Книгу лучше купить, чем пользоваться электронной. Я пользуюсь Герберд Шилдт "Полный справочник по С. Четвёртое издание". Заказывал на OZONе. Нашёл ответы на свои и чужие вопросы.  Остальное - особенности компилятора. Некоторые в доке - некоторые тут. Удачи.
|
|
|
|
|
Jan 16 2007, 01:25
|

Профессионал
    
Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380

|
Значиться так - С для МК самое то. Особенно если работаешь с несколькими семействами и перетаскиваешь наработки с одного на другое. Компиляторы. Есть два серьезных: IAR и gcc aka WinAVR. Для обоих есть порты и для ARM, MSP и других платформ. Немало копий сломано в их сравнительном анализе, но оба на голову выше всех остальных. Книги - присоединяюсь к SasaVitebsk, по поводу Шилдта и еще порекомендую - Брюс Эккель "Философия С++". http://c2p.ru/2006/07http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.htmlЭто маст рид, ответы на вопросы как?, почему? и зачем?
--------------------
Вони шукають те, чого нема, Щоб довести, що його не існує.
|
|
|
|
|
Jan 16 2007, 10:12
|
Участник

Группа: Новичок
Сообщений: 58
Регистрация: 11-01-07
Пользователь №: 24 311

|
Шпака - хорошая книга, но лучше не в электронном виде еще примеры на си есть у Голубцова я, например, все что не могу найти в магазине, покупаю на books.ru набираешь там - AVR, и выбирай у меня почти все есть с пометкой AVR Удачи, Дмитрий
|
|
|
|
|
Jan 16 2007, 12:56
|
Местный
  
Группа: Свой
Сообщений: 298
Регистрация: 29-08-05
Пользователь №: 8 064

|
Может для начала и сложно, и направлена она на С++, хотя С там тоже описано, нет только функций с переменным числом параметров, но многие ответы на вопросы нашел только в ней. В инете не видел, да и не искал, вот что на обложке:
Харьковский институт информационных технологий С.В. Глушаков, C.В. Смирнов, А.В. Коваль Практикум по С++ www.bookpost.com.ua изд. ФОЛИО г. Харьков 2006г. www.folio.com.ua
Пользую, как и многие сдесь IAR, проблем не встречал, всем доволен.
|
|
|
|
|
Jan 16 2007, 16:33
|
Участник

Группа: Новичок
Сообщений: 73
Регистрация: 10-01-07
Пользователь №: 24 292

|
мне понравилось "Си для МК" [BANNED] - по-моему толково и самое нужное. Цитата(umup @ Jan 15 2007, 22:45)  Pardue J.C programming for microcontrollers www.narod.ru/1110.zipНе качается. Можно проверить ссылочку ?
Сообщение отредактировал IgorKossak - Jan 18 2007, 18:05
|
|
|
|
|
Jan 17 2007, 22:08
|

Местный
  
Группа: Свой
Сообщений: 226
Регистрация: 2-06-06
Пользователь №: 17 720

|
Цитата www.narod.ru/1110.zip Извиняюсь, должно быть так : www.umup.narod.ru/1110.zip
|
|
|
|
|
Jan 17 2007, 23:26
|
Частый гость
 
Группа: Новичок
Сообщений: 100
Регистрация: 9-03-06
Пользователь №: 15 088

|
Б. Керниган, Д. Ритчи "Язык программирования Си". В электронном виде можно http://www.lib.ru/CTOTOR/kernigan.txt, но ИМХО лучше купить. После набора определенного опыта можно: "ВЕРЕВКА ДОСТАТОЧНОЙ ДЛИНЫ, ЧТОБЫ… ВЫСТРЕЛИТЬ СЕБЕ В НОГУ" Правила программирования на Си и Си++ Ален И. Голуб Качать тут: http://www.sdteam.com/texts/11/251.zip
|
|
|
|
Guest_Serg79_*
|
Jan 18 2007, 08:26
|
Guests

|
Цитата(CSB @ Jan 17 2007, 23:26)  Б. Керниган, Д. Ритчи "Язык программирования Си". В электронном виде можно http://www.lib.ru/CTOTOR/kernigan.txt, но ИМХО лучше купить. Классика. Если хочешь действительно почувствовать 'C', то надо начинать с этой книги.
|
|
|
|
|
Jan 18 2007, 09:49
|
Участник

Группа: Новичок
Сообщений: 73
Регистрация: 10-01-07
Пользователь №: 24 292

|
Полная книга от профи по WinAVR "C programming for AVR" - SmileyMicros.com [BANNED] на сайте SmileyMicros.com лежит только первая глава.
Сообщение отредактировал IgorKossak - Jan 19 2007, 17:21
|
|
|
|
|
Jan 18 2007, 12:47
|

Профессионал
    
Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360

|
Цитата Abakt Цитата [BANNED] Это реклама курса или прикол такой нездоровый
Сообщение отредактировал IgorKossak - Jan 19 2007, 17:22
--------------------
Андрей Смирнов
|
|
|
|
|
Sep 2 2007, 19:36
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Т.Достоевский @ Sep 2 2007, 22:18)  Перенесите... А почему Вы решили "переносить" какие-то свои личные проблемы с GCC,IAR,PCAD,.... на других? У меня, например, никаких проблем с портированием 'C' исходников с платформы на платформу (в отличие от ASM) /компилятор не возникает.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 2 2007, 20:15
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Цитата(Т.Достоевский @ Sep 2 2007, 21:33)  Если Вы не планируете написать windows под АВР, забудте про С НАВСЕГДА! А какие вообще у Вас лично претензии к Си. А то голословное утверждение да ещё в такой ветке отпугивает начинающих. Пожалуйста аргументируйте. Если разбирать более низкий пост о портировании программ, то он не выдерживает никакой критики. 1) Сопровождать программу и вносить в неё изменения на Си - в десятки раз легче. 2) Переносимость с камня на камень - в десятки раз легче. 3) Переносимость с компилятора на компилятор не такая уж и сложная. В тоже время вас никто не заставляет переходить с компилятора на компилятор. Тот же IAR или GCC поддерживает одновременно множество камней. 4) Отладка на Си тоже проще. 5) Результирующий код как правило не намного уступает.
|
|
|
|
|
Sep 2 2007, 20:31
|
Профессионал
    
Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387

|
Цитата Если Вы не планируете написать windows под АВР, забудте про С НАВСЕГДА! Гы  Никогда не писал программ для AVR на ассемблере. А что такое windows?
--------------------
aka Vit
|
|
|
|
|
Sep 2 2007, 21:17
|

Местный
  
Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606

|
Цитата(SasaVitebsk @ Sep 3 2007, 00:15)  А какие вообще у Вас лично претензии к Си. А то голословное утверждение да ещё в такой ветке отпугивает начинающих. Пожалуйста аргументируйте. Аргументирую. Я сам больше схемотехник. Использую в своих изделиях 5 микроконтроллерных архитектур. И по времени столько же сколько автор поста. Однако с языками высокого уровня возникают определённые сложности. 1: Все компиляторы, это комерческие проэкты расчитанные на выкачивание максимального количества денег. (В том числе и бесплатые) Отсюда совешенная неуверенность, что через год Вы сможете БЫСТО добавить что нибудь в Вашу програму. 2: Пока что не встречал компилятора генерирующего хотя бы жалкое подобие асмовской программы. В основном код в РАЗЫ больше. 3 Перенести микроконтроллерый код с одной платформы на другую гораздо проще и главное быстрее чем разбираться с тонкостями компилятора. Которые к тому же отличаются от версии к версии. Ещё раз повторюсь микроконтроллерного. Речь не идет о многомегабайтном проэкте который врядли применим к AVR. По поводу пункта 1. Вполне возможно что компилятор старой версии и захочет работать под вистой 2. Но на новое железо, ХР вы скорее всего поставить не сможите. Теперь лирическое отступление извиняюсь за ИМХО создаётся впечатление что для присутствующих сдесь микроконтроллеры есть самоцель, а не простая микросхема установленная в ряду среди других таких же микросхем. И если Вы занимаетесь не только программированием а пытаетесь сделать целиком устройство которое что-то дёргает или там чем то в такт чему то моргает, то у Вас скорее всего не будет времени заниматься копанием в тухлой документации компилятора. Вообщем если Вы 20 лет успешно пишете на асме, то целиком переходить на С надо только при очень веских к тому основаниях. Если Вы всё-таки решились перейти на С то после каждой копиляции обязательно гляньте в отладчик. В иаре размер кода очень сильно зависит о положения операторов. И при определённом опыте компилятору можно очень помочь с генерацией опимального кода. Не брезгуйте применять те же методы по упаковке или ускоению которые вы применяли на асме. Действуют буквально так-же, на любом уровне оптимизации!!! Конкретно к С претензий у меня нет никаких.
Сообщение отредактировал Т.Достоевский - Sep 2 2007, 21:18
|
|
|
|
|
Sep 2 2007, 22:01
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(Stariy Alex @ Sep 3 2007, 00:35)  PS. Залить на фтп? Komu na mylo? pdf с bookmark'ами? Залейте, пригодится. Спасибо  Цитата(Т.Достоевский @ Sep 3 2007, 00:17)  Аргументирую. Отвечу смайликами на ваши аргументы. Цитата 1: Все компиляторы, это комерческие проэкты расчитанные на выкачивание максимального количества денег. (В том числе и бесплатые) Отсюда совешенная неуверенность, что через год Вы сможете БЫСТО добавить что нибудь в Вашу програму. Цитата 2: Пока что не встречал компилятора генерирующего хотя бы жалкое подобие асмовской программы. В основном код в РАЗЫ больше. Цитата 3 Перенести микроконтроллерый код с одной платформы на другую гораздо проще и главное быстрее чем разбираться с тонкостями компилятора. Ага, конечно. Вы хотите сказать, что можно вот так вот запросто взять 100k исходников на asm под x51 и запустить на AVR? А проект написанный на plain C вызовет сложности с переносом из-за компиляторов? Смешно... Может быть вы схемотехник от Бога, но зачем же ж вот так рубить с плеча, и городить невесть-что в теме где вы "ноль в сиянии". Цитата Если Вы всё-таки решились перейти на С то после каждой копиляции обязательно гляньте в отладчик. В иаре размер кода очень сильно зависит о положения операторов. А вы не задумывались, что не всегда нужно получить минимальный размер кода? Иногда проще взять толстый кристал.
|
|
|
|
|
Sep 2 2007, 22:17
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Т.Достоевский @ Sep 3 2007, 00:17)  Отсюда совешенная неуверенность, что через год Вы сможете БЫСТО добавить что нибудь в Вашу програму. Только тем и занимаюсь, что в изделиях со сроком жизни 10-15-20 лет чего-то бысторо добавляю. Вашу неуверенность в себе разделить никак не могу. Цитата В основном код в РАЗЫ больше. Для программ "нажалнакнопкузажгласьлампочка" больше. Для более сложных разница начинает нивелироваться и меняться. Цитата Перенести микроконтроллерый код с одной платформы на другую гораздо проще и главное быстрее чем разбираться с тонкостями компилятора. Дело обстоит с точностью до наоборот. Без вариантов. Цитата Вполне возможно что компилятор старой версии и захочет работать под вистой. Вы на ASM пишете? А почему Assembler "захочет"? Потому, что кончается на 'у'? Цитата Но на новое железо, ХР вы скорее всего поставить не сможите. Ну мотивируйте хоть как-то  .
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 2 2007, 22:27
|

Местный
  
Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606

|
Поставьте НТ на новое железо, или на НТ акробат 6. Он "сам пришёл"? Цитата(defunct @ Sep 3 2007, 02:25)  Обеспечивает удаленное управление электроподстанцией 35KV. Нейросетью вычисления проводит? Или спреадспектрум кодирование 256 бит последовательность? THD + cos фи в каждом канале?
Сообщение отредактировал Т.Достоевский - Sep 2 2007, 22:31
|
|
|
|
|
Sep 2 2007, 23:00
|

Местный
  
Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606

|
Цитата(defunct @ Sep 3 2007, 02:39)  Нет всего лишь обеспечивает удаленное управление рядом ячеек с пульта диспетчера. Автоматику в ячейках выполняют устройства релейной защиты. Там программы гораздо больше 100k и на ASM их никто не делает. К сожелению про релейную зашиту ничего не знаю. А сколько ячеек и сколько параметров? Почему 100кб? Мои знакомые не смогли уместить в мегу64 обычный пульт управления для моделей. Правда там таблиц много. 10x256 байт. (типа нелинейные резисторы) + килобайта 2 кода, ну всё-равно не больше. Вот и спрашиваю.
Сообщение отредактировал Т.Достоевский - Sep 2 2007, 23:01
|
|
|
|
|
Sep 3 2007, 00:43
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Цитата(Т.Достоевский @ Sep 3 2007, 06:17)  Аргументирую. Я сам больше схемотехник. Использую в своих изделиях 5 микроконтроллерных архитектур. И по времени столько же сколько автор поста. Однако с языками высокого уровня возникают определённые сложности. Все правильно! Вы же больше схемотехник! На тонкости изучения ЯВУ (языка высокого уровня) нет времени. Цитата(Т.Достоевский @ Sep 3 2007, 06:17)  1: Все компиляторы, это комерческие проэкты расчитанные на выкачивание максимального количества денег. (В том числе и бесплатые) Отсюда совешенная неуверенность, что через год Вы сможете БЫСТО добавить что нибудь в Вашу програму. Если не сложно, объясните, как бесплатные компиляторы ориентированы на выкачивание денег? Цитата(Т.Достоевский @ Sep 3 2007, 06:17)  2: Пока что не встречал компилятора генерирующего хотя бы жалкое подобие асмовской программы. В основном код в РАЗЫ больше. Вы так один говорите. А другие в это время пишут на си/си++ и видят совсем другое. Для справки: недавно писал программу управления манипулятором (МП-9С), с применением ОС, на Си++. Функции программы: ручное управление звеньями робота, занесение программы с пульта управления и ее выполнения, опрос датчиков, свзяь с PC. Код всего лишь 8 027 б. Расход ОЗУ 600 байт. Проект выполнен за месяц. Переносим. С асмом бы копался и отлаживался месяца два и больше... Цитата(Т.Достоевский @ Sep 3 2007, 06:17)  3 Перенести микроконтроллерый код с одной платформы на другую гораздо проще и главное быстрее чем разбираться с тонкостями компилятора. Которые к тому же отличаются от версии к версии. Отличаются... на то и выходят новые версии программ, чтобы отличаться от старых, вносить что-то новое. Иначе бы прогресс остановился. Тем более различия не так уж и ощутимы для работы. Цитата(Т.Достоевский @ Sep 3 2007, 06:17)  По поводу пункта 1. Вполне возможно что компилятор старой версии и захочет работать под вистой 2. Но на новое железо, ХР вы скорее всего поставить не сможите. Windows выбросил. Использую Linux, которую на новое железо (если оно такое новое и несовместимое со старым) все равно портируют. Цитата(Т.Достоевский @ Sep 3 2007, 06:17)  Теперь лирическое отступление извиняюсь за ИМХО создаётся впечатление что для присутствующих сдесь микроконтроллеры есть самоцель, а не простая микросхема установленная в ряду среди других таких же микросхем. И если Вы занимаетесь не только программированием а пытаетесь сделать целиком устройство которое что-то дёргает или там чем то в такт чему то моргает, то у Вас скорее всего не будет времени заниматься копанием в тухлой документации компилятора. Ошибочное мнение на счет самоцели. Для меня это например просто цель. Цель получить конкретно работающее устройство! А времени на копание документации по микроконтроллеру и другим компонентам, применяемым в изделии у Вас будет? А Вы не учитываете, то, что доку на компилятор придется прочесть хорошо только один - два раза и далее пользоваться этим инструментом, получая огромный выигрыш по времени разработки и отладки девайса + переносимости кода и т.п. Не правда ли ощцтимый плюс? Цитата(Т.Достоевский @ Sep 3 2007, 06:17)  Вообщем если Вы 20 лет успешно пишете на асме, то целиком переходить на С надо только при очень веских к тому основаниях. Если Вы 20 лет пишите на асме (пусть даже и успешно), то явно пора пересмотреть свои привычки. Цитата(Т.Достоевский @ Sep 3 2007, 06:17)  Если Вы всё-таки решились перейти на С то после каждой копиляции обязательно гляньте в отладчик. В иаре размер кода очень сильно зависит о положения операторов. И при определённом опыте компилятору можно очень помочь с генерацией опимального кода. Не брезгуйте применять те же методы по упаковке или ускоению которые вы применяли на асме. Действуют буквально так-же, на любом уровне оптимизации!!! Открытие Америки... многим известные и многими знаемые вещи. Цитата(Т.Достоевский @ Sep 3 2007, 06:17)  Конкретно к С претензий у меня нет никаких. Неправда Ваша. Есть.
--------------------
Выбор.
|
|
|
|
|
Sep 3 2007, 05:22
|
Профессионал
    
Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387

|
2 Т.Достоевский Я не больше, а схемотехник. И уменя используются C51, PIC, AVR, MSP430, ARM от PIC12C508A до LPC2378 всяких размеров и наполнений. И это не от желания развести зоопарк. Не могу сказать, что наши программисты асы. Эти люди, а некоторые уж больше чем 30 лет пишут для промавтоматики, пишут на ассемблере только когда "жизнь заставляет" - где-то, например, быстрая математика нужна или где-то в старом контроллере нужно поменять методику расчётов, а в память уже не лезет (итерационные вычисления с double на 51-ом  ). Так чтоб писать на ассемблере без нужды - у них и мысли не возникает. Я же имею субъективное мнение, что уже лет 5 аргумент насчёт общего преимущества в объёме у ассемблера против Си есть заблуждение. Всвязи с резким падением цен на кремний и продвижением всё более интегрированных решений, время на разработку в части схемотехники постепенно уменьшается. А time-to-market не ждёт - упор идёт на работу программистов. Т.е. кроме многих (пока) специализированных устройств появляется всё больше reference-платформ (аппаратно-программных), что обеспечивает не только некоторое уменьшение работы схемотехникам, но и уменьшение времени на разработку вообще. Так вот использование ЯВУ (а для микроконтроллеров в подавляющем большинстве случаев это Си и наблюдается рост доли C++) позволяет осуществлять быстрый перенос решений с платформы на платформу, что уменьшает time-to-market, а также уменьшает затраты на поддержку. Вопрос. Почему большинство Си-компиляторов платные, а ассемблеры платные - редкая штука? ЗЫ Вспомнилась Валерия Новодворская с её очаровательной фразой: "Вы все дураки и не лечитесь! Одна я умная, в белом пальто стою красивая!" http://foto.rambler.ru/public/manechkaaa/1/10/1-web.jpg
--------------------
aka Vit
|
|
|
|
|
Sep 3 2007, 05:58
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(sensor_ua @ Sep 3 2007, 08:22)  ЗЫ Вспомнилась Валерия Новодворская с её очаровательной фразой: "Вы все дураки и не лечитесь! Одна я умная, в белом пальто стою красивая!" http://foto.rambler.ru/public/manechkaaa/1/10/1-web.jpgЕсть и другие фразы : "Я Пастернака не читал, но осуждаю"
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Sep 3 2007, 06:03
|
Профессионал
    
Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387

|
Цитата Есть и другие фразы : "Я Пастернака не читал, но осуждаю" А ещё: - Армянин лучше, чем грузин. - Чем лучше? - Чем грузин.
--------------------
aka Vit
|
|
|
|
|
Sep 3 2007, 06:31
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(sensor_ua @ Sep 3 2007, 08:22)  .. Не могу сказать, что наши программисты асы. Эти люди, а некоторые уж больше чем 30 лет пишут для промавтоматики, пишут на ассемблере только когда "жизнь заставляет" ... Если серьезно... У нас ситуация с программистами хуже. Они, как Т.Достоевский, долго отстаивали свое право писать на языке, который знают - а именно на ассемблере. В результате они просто не нужны фирме, поскольку не в состоянии произвести нужный продукт к нужному сроку. То, что сделано, становится непереносимо уже на стадии сдачи проекта. Плюс их требования к постановке задачи (еще бы - переделка очень трудоемка), плюс требования по тестированию. Удручает. Стали переучиваться, но столько времени потеряно... Я лично их списал и пишу сам на С. Благо, что цифровая схемотехника в наше время схлопывается.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Sep 3 2007, 06:46
|
Участник

Группа: Новичок
Сообщений: 19
Регистрация: 12-04-07
Пользователь №: 26 979

|
IARовский сишный компилятор дает вполне оптимальный код. Выигрыш по скорости проектирования получается существенный. А в узких местах можно и подпрограмму на асме вставить. Но в моей практике подобное встречалось пару раз. И то для обработчика прерывания. Хотя порой сложно объяснить компилятору на Си как к примеру сделать циклический сдвиг через перенос. А в основном код получается по компактности практически такой же как и на ассемблере.
Сообщение отредактировал zcost - Sep 3 2007, 06:48
|
|
|
|
|
Sep 3 2007, 15:11
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Я тоже очень долго писал на асме. Сам в спор не вступал. Как можно спорить "о вкусе устриц, которых не ел". Но был убеждён, что я напишу прогу на АСМе быстрее чем некоторые на Си.
1. Скорость написания программы на АСМе и Си возможно и близкая, но если требуется внести среднее изменение, то на Си его сделать в разы проще!!! В разы! Это я говорю совершенно убеждённо. А изменения вносятся часто. То есть оптимальность написания проги, оптимальность использования регистров - в этом случаем являются сильнейшим тормозом. И всё портится с внесением "заплаток". 2. Сам переносил программу с х51 на AVR на асме путём переписывания без мозгов. Поверьте, всё равно на Си это делается проще и главное, красивее. 3. Пробовал в проекте делать вставки на АСМе. Отказался. Производительность выросла на единицы процентов. Так зачем этот цирк?
Как то здесь зашла дискуссия о ненужности ОСей для малых камней. Автор надрывался с просьбой "продемонстрировать эффективность". И кто-то из знающих классную фразу сказал по типу что код не будет эффективнее, но написание будет более удобным, более функциональным. Что-то подобное и с использованием компилятора. Компилятор обладает преимуществами, но плата за эти преимущества - эффективность кода. Но не в разы, как вы пишете. А единицы процентов. Я сам поразился, когда сделал первый проект. И назад, у меня возврата уже нет. А вам рекомендую перейти. А затраты на освоение особенностей компилятора, будут меньше, чем затраты на работу с АСМ прогами.
Совершенно искренне.
|
|
|
|
|
Sep 3 2007, 20:00
|
Частый гость
 
Группа: Участник
Сообщений: 76
Регистрация: 21-10-05
Пользователь №: 9 941

|
Цитата(Stariy Alex @ Sep 3 2007, 00:35)  Дейтел - Как программировать на C - 1002 стр. (подробно) Керниган - Ричи - Язык программирования C - Издание 2 (исправленное, pdf) PS. Залить на фтп? Komu na mylo? Залейте, пожалуйста, bbill@mail.ru Спасибо.
|
|
|
|
|
Sep 3 2007, 20:45
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(Т.Достоевский @ Sep 4 2007, 00:32)  В чём? Глубокоуважаемый Достоевский, раз уж Вы так радеете за программирование на Asm, хочу предложить Вам небольшую задачку(которая кстати не очень хорошо решается на С), необходимо поменять в байте порядок следования битов на противоположный, т.е. вход: b7 b6 b5 b4 b3 b2 b1 b0 выход: b0 b1 b2 b3 b4 b5 b6 b7 ну конечно нужна максимальная скорость, но без таблиц(места нету  ) Покажите нам пример как нужно эфективно писать проги....
|
|
|
|
|
Sep 3 2007, 20:53
|

Местный
  
Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606

|
Цитата(singlskv @ Sep 4 2007, 00:45)  Глубокоуважаемый Достоевский, раз уж Вы так радеете за программирование на Asm, хочу предложить Вам небольшую задачку(которая кстати не очень хорошо решается на С), необходимо поменять в байте порядок следования битов на противоположный, т.е. вход: b7 b6 b5 b4 b3 b2 b1 b0 выход: b0 b1 b2 b3 b4 b5 b6 b7 ну конечно нужна максимальная скорость, но без таблиц(места нету  ) Покажите нам пример как нужно эфективно писать проги.... Дайте подумать!
|
|
|
|
|
Sep 3 2007, 21:11
|

Местный
  
Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606

|
Цитата(singlskv @ Sep 4 2007, 01:02)  Да ни вапрос, до завтрашнего утра у Вас есть время  А если серьезно ,то до завтрашнего вечера  Это максимум на обдумывание такой задачки... Дело в том что Я уже 5 лет как не пишу софт сам. Его за меня пишут люди, причём на С. ldi r18,8 ;такой задачи не разу небыло ldd r16,data ; код абсолютно переносимый clr r17 m1:rol r16 ror r17 dec r18 brne m1 ; могу добавить на i51 pic16, holtec, ARM. если конечно вспомню где это всё лежит std data,r16
Сообщение отредактировал Т.Достоевский - Sep 3 2007, 21:13
|
|
|
|
|
Sep 3 2007, 21:44
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(Т.Достоевский @ Sep 4 2007, 01:24)  А пример? Яж в булевых функциях не силён. пример будет после того как Вы скажете что нужно писать на С или предоставите общественности код для данной задачки хотябы за 15 тактов  (ШУЧУ) Вобщем-то Вы уже раскрылись, написть быстрый код на асм Вы не очень то умеете... Но спорите... Я типа вроде как умею писать быстро и на С и на асм, а код типа такой: Код ; 13 words / 13 cycles ; tmp= abcdefgh mov tmp2,tmp ; tmp2= abcdefgh andi tmp2,0b01010101; tmp2= 0b0d0f0h andi tmp, 0b10101010; tmp= a0c0e0g0 bst tmp2,0 ; T=h lsr tmp2 ; tmp2= 00b0d0f0 bld tmp2,7 ; tmp2= h0b0d0f0 lsl tmp ; tmp= 0c0e0g00 C=a adc tmp, tmp2 ; tmp= hcbedgfa mov tmp2,tmp ; tmp2= hcbedgfa andi tmp2,0b01100110; tmp2= 0cb00gf0 swap tmp2 ; tmp2= 0gf00cb0 andi tmp, 0b10011001; tmp= h00ed00a add tmp, tmp2 ; tmp= hgfedcba
|
|
|
|
|
Sep 3 2007, 21:56
|

Местный
  
Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606

|
Цитата(singlskv @ Sep 4 2007, 01:44)  пример будет после того как Вы скажете что нужно писать на С или предоставите общественности код для данной задачки хотябы за 15 тактов  (ШУЧУ) Вобщем-то Вы уже раскрылись, написть быстрый код на асм Вы не очень то умеете... Но спорите... Я типа вроде как умею писать быстро и на С и на асм, а код типа такой: Код ; 13 words / 13 cycles ; tmp= abcdefgh mov tmp2,tmp ; tmp2= abcdefgh andi tmp2,0b01010101; tmp2= 0b0d0f0h andi tmp, 0b10101010; tmp= a0c0e0g0 bst tmp2,0 ; T=h lsr tmp2 ; tmp2= 00b0d0f0 bld tmp2,7 ; tmp2= h0b0d0f0 lsl tmp ; tmp= 0c0e0g00 C=a adc tmp, tmp2 ; tmp= hcbedgfa mov tmp2,tmp ; tmp2= hcbedgfa andi tmp2,0b01100110; tmp2= 0cb00gf0 swap tmp2 ; tmp2= 0gf00cb0 andi tmp, 0b10011001; tmp= h00ed00a add tmp, tmp2 ; tmp= hgfedcba Сами придумали? Если да, то этот же алгоритм должен быть на С той же длинны и времени! Но это уже будет не про С. Ещё раз повторю. Ни спорю Я про С. Я говорю что компиляторы ещё долго будут полное Г.(IAR) Это основной мой матифф! ЗЫ. Этот код и на паскале наверное такой-же по времени выйдет.
Сообщение отредактировал Т.Достоевский - Sep 3 2007, 21:58
|
|
|
|
|
Sep 3 2007, 22:14
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(Т.Достоевский @ Sep 4 2007, 01:56)  Сами придумали? Если да, то этот же алгоритм должен быть на С той же длинны и времени! Но это уже будет не про С. Сам придумал, а Вы не смогли  Ничего он Вам не должен(алгоритм на С)если Вы не можете написать сами так на асемблере, то какого хрена Вы сравниваете его с С? Большинство алгоритмов я могу написать на C так что размер/скорость выполнеиния не будут отличаться от ASM более чем на 10-15% Цитата Ещё раз повторю. Ни спорю Я про С. Я говорю что компиляторы ещё долго будут полное Г.(IAR) Это основной мой матифф! Ok, я чуть подумаю какую Вам задачку подогнать, условие такое, есть набор выходных данных в памяти, есть набор выходных, есть некоторое преобразование входных в выходные , вы пишите на асм я на С, готовы ?
|
|
|
|
|
Sep 3 2007, 22:44
|

Местный
  
Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606

|
Цитата(singlskv @ Sep 4 2007, 02:14)  Ok, я чуть подумаю какую Вам задачку подогнать, условие такое, есть набор выходных данных в памяти, есть набор выходных, есть некоторое преобразование входных в выходные , вы пишите на асм я на С, готовы ? Нет. Неужели вы думаете что у меня нет на руках примеров, и Я голословно что то утверждаю? Когда мой работники не смогли в IARе впихнуть в мегу 48 то что у меня поместилось в 90с1200, это всё и выплыло. Посмотрите мои посты на сахаре и сдесь про прерывания на С. Сам Я вообше не програмист и образование у меня 5 классов (без иронии). Там были приведены примеры от програмистов. 5-и кратное увеличение кода по сравнению с асм это цветочки.
|
|
|
|
|
Sep 4 2007, 01:11
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Цитата(Т.Достоевский @ Sep 4 2007, 07:44)  Нет. Неужели вы думаете что у меня нет на руках примеров, и Я голословно что то утверждаю? Пока получается так. Цитата(Т.Достоевский @ Sep 4 2007, 07:44)  Нет. Неужели вы думаете что у меня нет на руках примеров, и Я голословно что то утверждаю? Когда мой работники не смогли в IARе впихнуть в мегу 48 то что у меня поместилось в 90с1200, это всё и выплыло. А переносимость кода? А сроки? Вы не смогли с простой задачей справиться на асме, хотя из ваших постов следует, что Вы им владеете) Цитата(Т.Достоевский @ Sep 4 2007, 07:44)  Сам Я вообше не програмист и образование у меня 5 классов (без иронии). Это отлично видно, что Вы не программист. Только противоречие получается: Вы не программист, но спорите о преимуцествах ассемблера (которым Вы не очень-то и владеете) против Си. Да и вообще, утверждаете что 5 лет не программировали, и также спорите. Да за 5 лет столько воды утекло и многое изменилось в мире embedded.
--------------------
Выбор.
|
|
|
|
|
Sep 4 2007, 04:07
|
Участник

Группа: Новичок
Сообщений: 19
Регистрация: 12-04-07
Пользователь №: 26 979

|
Есть еще аргумент. Недаром архитектура микроконтроллеров как у атмела, так и у микрочипа становится Си ориентированной. Кстати код на С++ у IAR по компактности умещается в те же 10-15% в сравнении с асмом.
|
|
|
|
|
Sep 4 2007, 10:26
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(Dog Pawlowa @ Sep 4 2007, 13:11)  Или что такое Си ориентированная архитектура? 1) Наличие нескольких индексных регистров 2) Развитая косвенная адресация.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Sep 4 2007, 11:36
|

Местный
  
Группа: Свой
Сообщений: 208
Регистрация: 6-07-04
Из: Полтава
Пользователь №: 279

|
Цитата(singlskv @ Sep 4 2007, 00:44)  а код типа такой: Код ; 13 words / 13 cycles ; tmp= abcdefgh mov tmp2,tmp ; tmp2= abcdefgh andi tmp2,0b01010101; tmp2= 0b0d0f0h andi tmp, 0b10101010; tmp= a0c0e0g0 bst tmp2,0 ; T=h lsr tmp2 ; tmp2= 00b0d0f0 bld tmp2,7 ; tmp2= h0b0d0f0 lsl tmp ; tmp= 0c0e0g00 C=a adc tmp, tmp2 ; tmp= hcbedgfa mov tmp2,tmp ; tmp2= hcbedgfa andi tmp2,0b01100110; tmp2= 0cb00gf0 swap tmp2 ; tmp2= 0gf00cb0 andi tmp, 0b10011001; tmp= h00ed00a add tmp, tmp2 ; tmp= hgfedcba Трюк, несомненно, красивый.  Но такой вариант не так уж сильно ему уступает: Код ; 14 words / 14 cycles ; tmp=abcdefgh mov tmp2,tmp ror tmp rol tmp2 ror tmp rol tmp2 ror tmp rol tmp2 ror tmp rol tmp2 ror tmp andi tmp,0xf0 andi tmp2,0x0f or tmp,tmp2 swap tmp ; tmp=hgfedcba
|
|
|
|
|
Sep 4 2007, 12:58
|

Знающий
   
Группа: Свой
Сообщений: 736
Регистрация: 29-04-06
Из: Berlin
Пользователь №: 16 605

|
Цитата(defunct @ Sep 3 2007, 02:01)  pdf с bookmark'ами? Залейте, пригодится. Спасибо Слил. http://electronix.ru/forum/index.php?showtopic=36124Цитата(bbill @ Sep 4 2007, 00:00)  Залейте, пожалуйста, bbill@mail.ru Спасибо. Отправил, 66 мб х 5 файлов (в комплекте AVR-Шпак с дискетой). На Рапидшару было бы проще.
|
|
|
|
|
Sep 4 2007, 13:24
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Dog Pawlowa @ Sep 4 2007, 14:00)  А x86 можно считать Си-ориентированной архитектурой? Два индексных регистра, о развитости косвенной адресации трудно судить, но она ведь есть? Буквы x бывают разные, если это '386', то 'индексные регисты' абсолютно все. Ну пример адресации: mov dx, fs:[eax + ecx*4 + 1] Ну даже если просто 86, то индексных тоже не два - si, di, sp, bp, bx.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 4 2007, 13:57
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(zltigo @ Sep 4 2007, 16:24)  Буквы x бывают разные, если это '386', то 'индексные регисты' абсолютно все. Ну пример адресации: mov dx, fs:[eax + ecx*4 + 1] Ну даже если просто 86, то индексных тоже не два - si, di, sp, bp, bx. Вот недостаток Си - полностью забывается архитектура! Строго говоря, источники расходятся в определении количества индексных регистров, относя bx к регистрам общего назначения и исключая sp ввиду его изменяемости не только программно, но и аппаратно. То есть я забыл всего лишь bp  Но я к чему? Не так то много нужно, чтобы быть Си-ориентированной архитектурой? Я думаю, что достаточно хорошего компилятора
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Sep 4 2007, 22:10
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(kv_addr @ Sep 4 2007, 15:36)  Трюк, несомненно, красивый.  Но такой вариант не так уж сильно ему уступает: [code] ..... На самом деле мой вариант это действительно просто трюк, просто мне нравятся такие трюки и если есть возможность их применить, то я их применяю, тока тогда, когда это действительно необходимо... Примерно такие же трюки вполне реализуемы/используемы на С Эфектифность конечно чуть меньше(на 10-15%), но при этом сохраняется полная переносимость... правда на другой платформе код может оказаться неэфективным, но рабочим... Вобщем, если подитожить, учите инструмент которым Вы пользуетесь...
|
|
|
|
|
Sep 4 2007, 22:53
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(Dog Pawlowa @ Sep 4 2007, 16:57)  относя bx к регистрам общего назначения и исключая BX никогда не был индексным регистром. (нет команд 8086-го, которые бы могли делать автоинкремент или декремент этого регистра). BX в 8086 можно использовать для базовой либо базово-индексной адресации: mov ax, [bx] <- базовая mov ax, [bx + si] <- базово-индексная. BP тоже базовый, только в сочетании с SS. SP - вещь в себе. остается и правда только два индексных регистра si, di.
|
|
|
|
|
Sep 5 2007, 07:18
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(defunct @ Sep 5 2007, 01:53)  нет команд 8086-го, которые бы могли делать автоинкремент или декремент этого регистра Автоинкременация не является признаком индексности или не индексности регистра - не выкручивайтесь  . Цитата BP тоже базовый, только в сочетании с SS. bp спокойно используeтся без "сочетания" с ss: mov ds:[bp],ax
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 5 2007, 09:46
|
Знающий
   
Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693

|
Цитата(kv_addr @ Sep 4 2007, 15:36)  Трюк, несомненно, красивый.  Но такой вариант не так уж сильно ему уступает: ... ;О) Дык, тупой rol-ror*8=16, в принципе, уступает 13-тактовому гулькин. Не тот случай, чтобы огород городить. И на-Цуется более кошерно...Что не может не радовать ;О)
|
|
|
|
|
Sep 5 2007, 09:58
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(defunct @ Sep 5 2007, 12:34)  адресовать через BX в 8086 можно, но это "базовый" регистр, bp - тоже. bp - Base Pointer по жизни  . Ну слава богу хоть работать можно  - defunct после изучения наконец дал "добро". Ну и еще раз напоминаю, что начиная с 386 и оставшиеся eax, ecx, edx регистры используются и как индексные. Все завязываем с разговорами о x86 в ветке по AVR 'C'.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 5 2007, 10:21
|

Местный
  
Группа: Свой
Сообщений: 208
Регистрация: 6-07-04
Из: Полтава
Пользователь №: 279

|
Цитата(singlskv @ Sep 5 2007, 01:10)  На самом деле мой вариант это действительно просто трюк, просто мне нравятся такие трюки и если есть возможность их применить, то я их применяю, тока тогда, когда это действительно необходимо... Как бы возражений нет, этот трюк мне тоже понравился.  На один такт меньше мною приведенного. Цитата(singlskv @ Sep 5 2007, 01:10)  Примерно такие же трюки вполне реализуемы/используемы на С Эфектифность конечно чуть меньше(на 10-15%), но при этом сохраняется полная переносимость... правда на другой платформе код может оказаться неэфективным, но рабочим... Особеность "Цэ" в том, что напрямую одноменным флагом не воспользуешься. Но и флагом "Тэ" (AVR) напрямую пользоваться стремно. Компилятор его пользует для собственных нужд, можно невпопад этот флаг задействовать. Цитата(singlskv @ Sep 5 2007, 01:10)  Вобщем, если подитожить, учите инструмент которым Вы пользуетесь... Я вроде как противоположного не утверждал...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|