реклама на сайте
подробности

 
 
> ASM: приказали долго жить?, Сколько еще продержится
OlegIvanov
сообщение Jun 19 2006, 23:28
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 38
Регистрация: 12-09-05
Пользователь №: 8 464



На досуге интересует мнение всех кто занимается программированием МК - коль долго еще возможно будет использовать ASM в разработках. Понимаю что тапочки и нужно спешить осваивать C (аппаратные возможности растут и проще написать A*B, например...). Но как сейчас какие плюсы - пишешь то что надо, не зависишь от уровня тупости разработчиков C компилятора, т.е. все на виду (предпочитаю надежность быстроте разработки). Но бесит реализация арифметики на ASMе. Ваше мнение, господа?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
beer_warrior
сообщение Jun 28 2006, 02:34
Сообщение #2


Профессионал
*****

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



Цитата
Но компиляторы используют обобщённые методы оптимизации, дающие средний результат на типичных задачах.

Вы не любите котов? Вы просто не умеете их готовить smile.gif
Сам долго исповедывал взгляды сходные вашим....Пока жизнь не заставила хорошенько покопаться в Сишных листингах. Итак, чем же код генерируемый компилятором отличается от написанного ручками?
1.Стартапом
2.Вызовами/завершениями функций.
Циклы, ветвления, присваивания итп. это и есть тривиальные задачи, котроые мало-мальски нормальный компилятор сгенерит также, как и самый искушенный программист.
Стартап освобождает от совершенно рутинной и тривиальной задачи начальной инициализации памяти.Если у вас на этот счет свои соображения - никто не запрещает вам подключать собственный стартап или вообще обходиться без такового.
Наиболее больной вопрос - вызовы функций и передача аргументов.
Да, нужно это или нет, компилятор приведет все вызовы к стандартному виду. Это дает вполне очевидное преимущество - не задумываться о порядке вызова функций - аргументы передаются гарантировано, гарантировано сохраняется контекст. Расплата за это - несколько больший расход стека и снижение быстродействия.
Однако, если вы более-менее хорошо знаете свой компилятор, это не есть проблема - вы четко знаете, сколько аргументов передастся через регистры, сколько раз вызовется push/pop. Дальше все в ваших руках - минимизация передаваемых аргументов, минимизация локальных переменных, привязка переменных к регистрам, inline -функции.Если вы правильно описали задачу - С быстро сгенерит вам работоспособный код, избавив от рутины и ошибок связанных с ней.
Если время позволяет ее вылизывать - вы можете сделать это не хуже , чем на ассемблере. Если нет, можете оставить все как есть. Меньшее количество текста и недоступные явно метки и распределение памяти сильно облегчит модификцию кода методом copy/paste. Вместе с тем они не будут представлять из себя черный ящик - на физические адреса вы сможете посмотреть в любой момент.

P.S.Здесь длинный спор между мной и dxp на тему оптимизации
у gcc и IAR. Приводится ассемблерный код, можете ознакомится.
http://electronix.ru/forum/index.php?showtopic=12284&st=75

Интересным является два подхода к оптимизации - прямолинейный у gcc и с вывертами у IAR. Так что, и компилятор можно подыскать по вкусу.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
dxp
сообщение Jun 28 2006, 03:48
Сообщение #3


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(beer_warrior @ Jun 28 2006, 09:34) *
Наиболее больной вопрос - вызовы функций и передача аргументов.
Да, нужно это или нет, компилятор приведет все вызовы к стандартному виду. Это дает вполне очевидное преимущество - не задумываться о порядке вызова функций - аргументы передаются гарантировано, гарантировано сохраняется контекст. Расплата за это - несколько больший расход стека и снижение быстродействия.

Если писать на том же асме код значительного размера, то приходишь к той же схеме - придумываешь сам себе соглашения о вызове и свято их придерживаешься! Иначе программа делается не сопровождаемоей даже автором, когда в каждом вызове свои "нюансы". Т.е. залог успеха - формализация подхода. Отсюда и небольшие накладные расходы в некоторых случаях на дополнительное копирование аргументов между регистрами. В подавляющем большинстве случаев роли это сегодня не играет никакой.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- OlegIvanov   ASM: приказали долго жить?   Jun 19 2006, 23:28
- - prottoss   Цитата(OlegIvanov @ Jun 20 2006, 07:28) Н...   Jun 19 2006, 23:58
- - haker_fox   Цитата(OlegIvanov @ Jun 20 2006, 08:28) Н...   Jun 20 2006, 00:11
- - arttab   Даже программируя на асме не всегда можно получить...   Jun 20 2006, 02:54
|- - defunct   Цитата(arttab @ Jun 20 2006, 05:54) Даже ...   Jun 20 2006, 05:55
- - Harbour   Сильно на C разгонишься когда памяти 512 байт.   Jun 20 2006, 04:25
|- - dxp   Цитата(Harbour @ Jun 20 2006, 11:25) Силь...   Jun 20 2006, 05:49
|- - viael   Цитата(Harbour @ Jun 20 2006, 08:25) Силь...   Jun 29 2006, 06:28
- - vanner   ЦитатаДаже программируя на асме не всегда можно по...   Jun 20 2006, 05:03
|- - Сергей Борщ   Цитата(vanner @ Jun 20 2006, 08:03) Цитат...   Jun 20 2006, 06:56
|- - IgorKossak   Цитата(Сергей Борщ @ Jun 20 2006, 09:56) ...   Jun 20 2006, 07:49
|- - Сергей Борщ   Цитата(IgorKossak @ Jun 20 2006, 10:49) Ц...   Jun 20 2006, 08:37
|- - OlegIvanov   Цитата(Сергей Борщ @ Jun 20 2006, 11:37) ...   Jun 20 2006, 15:29
||- - Сергей Борщ   Цитата(OlegIvanov @ Jun 20 2006, 18:29) В...   Jun 20 2006, 16:00
|- - SasaVitebsk   Цитата(Сергей Борщ @ Jun 20 2006, 11:37) ...   Jun 20 2006, 21:09
|- - CDT   ЦитатаПростите, может я не понял вопроса, а что ва...   Jun 21 2006, 13:19
||- - white.wind   Цитата(CDT @ Jun 21 2006, 17:19) ..хотя б...   Jun 21 2006, 13:43
||- - COMA   Цитата(white.wind @ Jun 21 2006, 17:43) Н...   Jun 22 2006, 11:45
||- - _Bill   Цитата(white.wind @ Jun 21 2006, 16:43) Ц...   Jun 22 2006, 11:59
||- - white.wind   Цитата(_Bill @ Jun 22 2006, 15:59) кодоге...   Jun 22 2006, 13:09
|- - Сергей Борщ   Цитата(SasaVitebsk @ Jun 21 2006, 00:09) ...   Jun 21 2006, 16:26
|- - SasaVitebsk   Цитата(Сергей Борщ @ Jun 21 2006, 19:26) ...   Jun 21 2006, 19:45
- - arttab   Глюки компилятора неисключены. и ошибки юзера, кот...   Jun 20 2006, 05:53
- - beer_warrior   Как говорится - пока существуют процессоры будет с...   Jun 20 2006, 05:57
- - arttab   ЦитатаХм.. "компилятор" асма более верно...   Jun 20 2006, 06:13
|- - otrog   Цитата(arttab @ Jun 20 2006, 10:13) Знаю ...   Jun 20 2006, 06:33
- - _Bill   Цитата(OlegIvanov @ Jun 20 2006, 02:28) Н...   Jun 20 2006, 06:29
|- - kolobok0   Цитата(_Bill @ Jun 20 2006, 10:29) ...Асс...   Jun 20 2006, 11:43
- - IgorKossak   Хм, надо же. Опять подняли религиозную тему! Н...   Jun 20 2006, 06:38
|- - tag   Цитата(IgorKossak @ Jun 20 2006, 10:38) Х...   Jun 21 2006, 14:26
- - white.wind   Попробовал asm, ничего, не страшный совсем Счас ...   Jun 20 2006, 06:56
|- - defunct   Цитата(white.wind @ Jun 20 2006, 09:56) П...   Jun 20 2006, 19:54
|- - dxp   Цитата(defunct @ Jun 21 2006, 02:54) Цита...   Jun 21 2006, 03:27
|- - defunct   Цитата(dxp @ Jun 21 2006, 06:27) Цитата(d...   Jun 22 2006, 10:56
|- - dxp   Цитата(defunct @ Jun 22 2006, 17:56) Я то...   Jun 22 2006, 12:14
|- - _Bill   Цитата(dxp @ Jun 22 2006, 15:14) Дело не ...   Jun 22 2006, 12:21
|- - IgorKossak   Цитата(dxp @ Jun 22 2006, 15:14) ...Отвеч...   Jun 22 2006, 13:00
|- - defunct   Цитата(dxp @ Jun 22 2006, 15:14) Цитата(d...   Jun 22 2006, 20:52
|- - dxp   Цитата(defunct @ Jun 23 2006, 03:52) Ну х...   Jun 23 2006, 03:32
|- - defunct   Цитата(dxp @ Jun 23 2006, 06:32) Во-от...   Jun 23 2006, 20:46
||- - dxp   Цитата(defunct @ Jun 24 2006, 03:46) Цита...   Jun 26 2006, 04:56
|- - vet   Цитата(dxp @ Jun 23 2006, 07:32) Мы здесь...   Jun 23 2006, 21:37
|- - dxp   Цитата(vet @ Jun 24 2006, 04:37) Цитата(d...   Jun 26 2006, 05:55
- - vanner   Это понятно, разработчики компиляторов тоже люди, ...   Jun 20 2006, 09:03
|- - Сергей Борщ   Цитата(vanner @ Jun 20 2006, 12:03) Это п...   Jun 20 2006, 09:09
- - Serj78   начинал на С, (cv) потом для тини12 пришлось поизу...   Jun 20 2006, 10:23
- - forever failure   Цитата(OlegIvanov @ Jun 20 2006, 05:28) к...   Jun 21 2006, 06:03
- - Alex_Pol   2 OlegIvanov. Слухи о смерти асма сильно преувелич...   Jun 21 2006, 14:06
- - CD_Eater   Всегда писал для AVR-ок на АСМе и не собираюсь пер...   Jun 22 2006, 11:03
- - vet   CD_Eater Поправьте, если я ошибаюсь, но, на мой вз...   Jun 22 2006, 11:40
- - COMA   чтение из ОЗУ инкремент запись в ОЗУ 3 команды   Jun 22 2006, 12:27
|- - _Bill   Цитата(COMA @ Jun 22 2006, 15:27) чтение ...   Jun 22 2006, 12:37
- - beer_warrior   ЦитатаБольшой минус АСМа - плохая переносимость на...   Jun 22 2006, 12:28
- - COMA   Случаи они разные бывают. Регистров может и не хва...   Jun 22 2006, 12:43
|- - _Bill   Цитата(COMA @ Jun 22 2006, 15:43) Случаи ...   Jun 22 2006, 12:52
- - vet   IgorKossak, ну, Java-процессор выполняет всё-таки ...   Jun 22 2006, 13:05
- - Stanislav   Цитата(IgorKossak @ Jun 22 2006, 17:00) Ц...   Jun 22 2006, 14:39
|- - defunct   Цитата(Stanislav @ Jun 22 2006, 17:39) Бы...   Jun 22 2006, 21:26
|- - Stanislav   Цитата(defunct @ Jun 23 2006, 01:26) Наск...   Jun 23 2006, 16:06
- - CD_Eater   Цитата(vet @ Jun 22 2006, 15:40) Поправьт...   Jun 22 2006, 16:23
|- - vet   Цитата(CD_Eater @ Jun 22 2006, 20:23) Цит...   Jun 22 2006, 19:20
- - beer_warrior   BTW, что меня убивало в 51 это односторонний перех...   Jun 22 2006, 21:05
- - upc2   Думаю, что ассемблер "умрет".При всех св...   Jun 26 2006, 05:48
- - vet   dxp, спасибо за подробный ответ.   Jun 26 2006, 06:37
- - IgorKossak   dxp, насколько я знаю применение аппаратного умнож...   Jun 26 2006, 06:40
|- - dxp   Цитата(IgorKossak @ Jun 26 2006, 13:40) d...   Jun 26 2006, 06:52
- - CD_Eater   dxp, тест очень неудачный Сравнение вычислительных...   Jun 26 2006, 13:20
|- - dxp   Цитата(CD_Eater @ Jun 26 2006, 20:20) dxp...   Jun 26 2006, 13:59
|- - defunct   Цитата(dxp @ Jun 26 2006, 16:59) Если бы ...   Jun 28 2006, 12:58
|- - dxp   Цитата(defunct @ Jun 28 2006, 19:58) Не н...   Jun 29 2006, 05:24
|- - Kopa   Ссылка на интересную статью и ресурс для роботостр...   Jun 29 2006, 05:32
|- - pokos   Цитата(dxp @ Jun 29 2006, 09:24) А вот яд...   Jun 29 2006, 06:31
||- - dxp   Цитата(pokos @ Jun 29 2006, 13:31) Цитата...   Jun 29 2006, 07:33
||- - pokos   Цитата(dxp @ Jun 29 2006, 11:33) ....А то...   Jun 29 2006, 08:41
||- - dxp   Цитата(pokos @ Jun 29 2006, 15:41) Цитата...   Jun 29 2006, 09:27
|- - singlskv   Цитата(dxp @ Jun 29 2006, 09:24) Вы еще з...   Jun 29 2006, 08:04
- - SpiritDance   dxp Поддерживаю Вас. В MSP430 ядро несравнено лучш...   Jun 26 2006, 17:41
- - CD_Eater   dxp Я не говорю, что AVR существенно мощнее )))))...   Jun 26 2006, 20:30
|- - haker_fox   Цитата(CD_Eater @ Jun 27 2006, 05:30) Моё...   Jun 27 2006, 01:29
|- - spf   Цитата(CD_Eater @ Jun 27 2006, 02:30) Трё...   Jun 27 2006, 03:47
||- - Kopa   Цитата(spf @ Jun 27 2006, 06:47) ИМХО: Та...   Jun 27 2006, 04:39
|||- - SpiritDance   Цитата(Kopa @ Jun 27 2006, 08:39) А так н...   Jun 27 2006, 04:51
|||- - Kopa   Цитата(SpiritDance @ Jun 27 2006, 07:51) ...   Jun 27 2006, 05:04
|||- - SpiritDance   Цитата(Kopa @ Jun 27 2006, 09:04) P.S. Вс...   Jun 27 2006, 11:28
|||- - Kopa   Цитата(SpiritDance @ Jun 27 2006, 14:28) ...   Jun 28 2006, 03:09
||- - CD_Eater   Цитата(spf @ Jun 27 2006, 07:47) ЦитатаПо...   Jun 27 2006, 18:42
||- - spf   Цитата(CD_Eater @ Jun 28 2006, 00:42) Лич...   Jun 28 2006, 01:06
|- - spf   Цитата(CD_Eater @ Jun 27 2006, 02:30) Трё...   Jun 27 2006, 06:10
|- - CD_Eater   Цитата(spf @ Jun 27 2006, 10:10) Цитата(C...   Jun 27 2006, 18:05
- - forever failure   Судя по объёму флуда, - асм жив, и более того - al...   Jun 28 2006, 03:57
- - upc2   Еше 2 года назад писал Vxd драйверы под windows на...   Jun 29 2006, 05:32
|- - dxp   Цитата(upc2 @ Jun 29 2006, 12:32) Прощай ...   Jun 29 2006, 05:55
|- - upc2   Цитата(dxp @ Jun 29 2006, 08:55) Цитата(u...   Jun 29 2006, 07:40
|- - dxp   Цитата(upc2 @ Jun 29 2006, 14:40) Цитата(...   Jun 29 2006, 08:17
|- - Kopa   [quote name='dxp' date='Jun 29 2006, 1...   Jun 30 2006, 03:30
- - forever failure   Ну вот ещё пример - о вечном. Совершенно прикладна...   Jun 29 2006, 06:27
- - upc2   Ну,в общем я с вами согласен.Мы говорим об одном и...   Jun 29 2006, 08:59
- - beer_warrior   Чтобы не путаться в терминологии, наверное надо че...   Jun 30 2006, 05:23
2 страниц V   1 2 >


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th August 2025 - 17:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.01502 секунд с 7
ELECTRONIX ©2004-2016