|
|
|
|
10985 28 0 0 |
|
Опции темы | Поиск в этой теме |
05.09.2010, 04:39 | 1 |
Ветеран Фонарёвки
Регистрация: 15.02.2010 Последняя активность: 24.08.2019 11:36
Сообщений: 1360
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
Программирование МК
|
05.09.2010, 07:49 | 2 |
Завсегдатай Фонарёвки
|
Да, только АВР на языке Си (WinAVR, CodeVisionAVR), до пиков руки еще не доходили
|
05.09.2010, 23:15 | 3 |
Ветеран Фонарёвки
Регистрация: 15.02.2010 Последняя активность: 24.08.2019 11:36
Сообщений: 1360
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
Жаль. Я AVR тоже кодить умею, правда на более адекватном для них языке - ассемблере. А вот PIC очень даже нужно "вкурить". Причём тоже на ассемблере, а доставать глупыми вопросами некого ...
|
05.09.2010, 23:18 | 4 |
Ветеран Фонарёвки
Регистрация: 14.02.2010 Последняя активность: 18.11.2015 19:18
Сообщений: 8758
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
В конфе почти каждый день присутствует Gall - профессиональный программист. Легко ответит на твои вопросы...
|
06.09.2010, 01:24 | 5 |
Ветеран Фонарёвки
Регистрация: 15.02.2010 Последняя активность: 24.08.2019 11:36
Сообщений: 1360
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
Я там не сижу и ирку ставить не горю желанием. У него аська есть?
Что-то мы тут расфлудились... |
15.09.2010, 13:18 | 6 |
Увлеченный
Регистрация: 21.06.2010 Последняя активность: 01.08.2015 23:26
Сообщений: 183
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
268139930
Поначалу я тоже считал, что МК лучше программировать на Ассемблере, но по мере овладевания языками перешел сначала на Си, а потом на C++. Выяснилось, что на C++ можно писать более компактный и эффективный код, нежели на ассемблере (компилятор создает машинный код лучше человека). |
15.09.2010, 19:40 | 7 | |
Завсегдатай Фонарёвки
|
Цитата:
Ну и другой недостаток Си - очень высокий порог вхождения... Первое время от гугла вообще не оторваться. Даже не знаю, сколько должно пройти времени, чтобы перестать гуглить, как сделать каждую операцию... Я бросил его раньше. |
|
15.09.2010, 19:43 | 8 |
Ветеран Фонарёвки
|
Для С есть прекрасная книга, которая этот порог ломает. По сути, Библия программиста, которая на примере С разбирает вообще алгоритмы. Авторы: Керниган, Ритчи.
|
15.09.2010, 19:46 | 9 | |
Завсегдатай Фонарёвки
|
Цитата:
Для ассемблера мне хватило списка команд (4 листа) и описания регистров в даташите мк, и я сразу начал писать. |
|
15.09.2010, 22:37 | 10 |
Ветеран Фонарёвки
Регистрация: 15.02.2010 Последняя активность: 05.09.2022 18:18
Сообщений: 1076
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
Цитата:
Для МК Си более чем достаточно. На самом деле компилятор создает машинный код хуже человека, но это зависит от человека Я "узкие" места переписываю на ассемблере, раз в 10 быстрее работает и код компактнее. А для начинающих писать на Си для МК нужно знать десяток Си- шных операторов и десяток библиотечных функций (работа со строками и памятью) и можно писать любую программу. |
15.09.2010, 23:02 | 11 |
Увлеченный
Регистрация: 12.02.2010 Последняя активность: 15.02.2011 20:41
Сообщений: 272
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
|
15.09.2010, 23:08 | 12 |
Увлеченный
Регистрация: 03.05.2010 Последняя активность: 10.09.2011 23:10
Сообщений: 359
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
Вы затронули настолько древний холивар, что корни его растут еще с перфокарт, тут идиального решения нет и не будет ближайшее время. Да, компиляторы научились выдавать машинный код, работающий быстрее того, что составит человек, но не всегда, так что спор бессмысленный
|
15.09.2010, 23:16 | 13 |
Увлеченный
Регистрация: 12.02.2010 Последняя активность: 15.02.2011 20:41
Сообщений: 272
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
Си++ на МК вполне в тему, кстати.
Я сейчас уже в проектах сишным функциям и переменным даю имена типа hal_display_osd_cursor_position_x, то есть по смыслу аналог hal.display.cursor.position.set_x(), потому что иначе можно запутаться, какая переменная к чему относится. Но у Си++ на МК, вроде, какие-то ограничения есть, ещё руки не дошли разобраться, так что пока по старинке. |
16.09.2010, 01:38 | 14 | |
Завсегдатай Фонарёвки
|
Да, холивар такой древний, что даже участвовать не буду... Просто скажу, что мне ассемблер больше нравится, и всё Толковых пособий, чтобы кратко и ёмко (ну не люблю я много читать, такой вот я) я не видел.
Цитата:
За что я например люблю php - у него есть централизованная документация, где по каждой функции кратко и ёмко написано, что она делает. У ассемблера впринципе даже одной таблицей можно это описать, даже ещё более кратко и ёмко. А Сишные функции и операторы для меня пока тёмный лес... |
|
16.09.2010, 04:36 | 15 |
Ветеран Фонарёвки
|
|
16.09.2010, 11:39 | 16 | |
Ветеран Фонарёвки
Регистрация: 15.02.2010 Последняя активность: 05.09.2022 18:18
Сообщений: 1076
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
Цитата:
Сложение цветных RGB точек c ограничением. typedef struct { unsigned char r; unsigned char g; unsigned char b; } sPoint; Вот код на Си: sPoint AplusB( sPoint a, sPoint b) { if(((unsigned short)a.r+(unsigned short)b.r) >255) a.r=255; else a.r+=b.r; if(((unsigned short)a.g+(unsigned short)b.g) >255) a.g=255; else a.g+=b.g; if(((unsigned short)a.b+(unsigned short)b.b) >255) a.b=255; else a.b+=b.b; return a; } Весь код в функции заменяется одной ассемблерной командой MMX Приблизительно тоже будет при обработке звука(особенно многоканального). |
|
16.09.2010, 11:58 | 17 |
Ветеран Фонарёвки
Регистрация: 15.02.2010 Последняя активность: 05.09.2022 18:18
Сообщений: 1076
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
|
16.09.2010, 12:12 | 18 |
Увлеченный
Регистрация: 12.02.2010 Последняя активность: 15.02.2011 20:41
Сообщений: 272
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
|
16.09.2010, 12:23 | 19 |
Ветеран Фонарёвки
Регистрация: 15.02.2010 Последняя активность: 05.09.2022 18:18
Сообщений: 1076
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
Ну хорошо, писать код не буду, на словах.
Например везде, где нужно использовать флаг переноса. Попробуйте 64битные вычисления реализовать на Си на 8 битном проце, и сделайте код на asm, и сравните Не зря арифметические библиотеки на Асме написаны. ПС. похоже пора отдельную ветку заводить. |
16.09.2010, 20:58 | 20 |
Увлеченный
Регистрация: 12.02.2010 Последняя активность: 15.02.2011 20:41
Сообщений: 272
Сказал(а) спасибо: 0
Поблагодарили: 0 раз(а) в 0 сообщениях
|
Сразу чтобы отмести все подозрения - я не пытаюсь устроить срач и холивар, мне действительно интересно докопаться до правды - благо, в таком деле, как вычисления, правда объективна и измерима в цифрах.
Вот что я написал на няшной сишечке: Код:
volatile unsigned long long i,j; int main(void) { i = 0x1FFFFFFFFFFFFFFF; j = 0x1FFFFFFFFFFFFFFF; i += j; while(1); return 0; } Вот соответствующий кусок lss-файла: У меня глаз к ассемблеру не слишком привычен, но на мой взгляд, это более чем приличный код для 64-хбитного суммирования. Занимает 256 байт. А как бы это написал опытный ассемблерщик? Неужели эту функцию можно впихнуть в 25 байт? Или даже в 100 байт? |