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

 
 
> 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
Ответов
CD_Eater
сообщение Jun 26 2006, 20:30
Сообщение #2


Частый гость
**

Группа: Новичок
Сообщений: 173
Регистрация: 3-09-04
Из: Moscow
Пользователь №: 595



dxp
Я не говорю, что AVR существенно мощнее smile.gif)))))))
Однако был приведён всего единственный тест, результат которого мог быть предсказан заранее и не мог отражать реального соотношения производительностей на характерных задачах МК.
Моя критика направлена не на утверждение о соотношении производительностей этих МК, а на метод доказательства этого утверждения.

Несчёт "узкого горлышка", которое Вы обнаружили в малом количестве указателей у AVR и в неполноценном указателе стека. Это действительно нехорошо с точки зрения общепринятого способа компиляции с ЯВУ, но при программировании на АСМе это не вызывает каких-либо затруднений. У меня сложилась практика использовать в качестве указателей только X и Y, а регистр Z - для "временных" целей (то есть, не ассоциировать его с каким-то значением, постоянным по ходу выполнения всей программы). Если обрабатываем два массива - X и Y. Если работаем со структурой - Y+displacement. Если нужно прочитать из флеша (или временно нужен дополнительный указатель) - используем Z. В частности, я никогда не использовал Z для обращений вида Z+displacement, и в этом вижу даже некоторую избыточность. Трёх указателей всегда хватало.

По поводу стека - при правильном распределении регистров использование стека минимально. Пихать в него параметры функций и создавать там локальные переменные - дурная привычка компиляторов с ЯВУ.
Кстати, раньше, как Вы, наверное, помните, в x86 был тот же подход - кроме указателя стека (SP, относительно которого нельзя адресоваться к данным в стеке) для стековых операций резервировался ещё один регистр (BP, полноценный), полную аналогию чему наблюдаем в компиляторах под AVR. Может, Вам ещё вложенные стековые кадры с инструкциями enter/leave хочется в 8-битном МК ? smile.gif)
Стек хорош для алгоритмов, когда размер данных, помещаемых в стек, предсказать сложно. Например, рекурсий. Для МК это непозволительная роскошь (по крайней мере, пока размер стека исчисляется сотнями байт). И подход к использованию стека в МК должен отличаться от принятого в софте настольных компьютеров.

Моё мнение - насаживание ЯВУ (напр., Си) на МК по своей природе противоестественно, но выполняется для благой цели - чтобы программисты, знакомые с ЯВУ, смогли писать прошивки. Ведь Атмелу, например, хочется продать побольше чипов, а ЯВУ - это хороший маркетинговый ход. Аналогия - чтобы продать больше компьютеров, их стали использовать как печатные машинки - тоже хороший маркетинговый ход. В результате компьютерами пользуются секретарши, а на МК программируют не знающие ассемблера прогеры.

К чему это я ? Просто все "узкие горлышки" куда-то исчезают, как только забываешь про Си и начинаешь писать на ассемблере - под это дело AVR заточен вполне пристойно, и в плане компактности кода, и в плане быстроты выполнения инструкций, и в плане удобства программирования (не идеал, но близко).
Go to the top of the page
 
+Quote Post
spf
сообщение Jun 27 2006, 03:47
Сообщение #3


Странник
****

Группа: Свой
Сообщений: 766
Регистрация: 29-08-05
Из: Екатеринбург
Пользователь №: 8 051



Цитата(CD_Eater @ Jun 27 2006, 02:30) *
Трёх указателей всегда хватало.

Видимо задачи большего не требовали или желание всегда ограничивалось на корню. wink.gif
Цитата
По поводу стека - при правильном распределении регистров использование стека минимально.

Опишите методику правильного распределения, причем безотносительно конкретного проца.
Цитата
Пихать в него параметры функций и создавать там локальные переменные - дурная привычка компиляторов с ЯВУ.

ИМХО. Подобные мысли можно обосновать только плохой реализацией в проце работы со стеком.
Цитата
Кстати, раньше, как Вы, наверное, помните, в x86 был тот же подход - кроме указателя стека (SP, относительно которого нельзя адресоваться к данным в стеке) для стековых операций резервировался ещё один регистр (BP, полноценный), полную аналогию чему наблюдаем в компиляторах под AVR.

Аналогия с x86 не впользу AVR, x86 разрабатывали 40 лет назад а AVR 10 и далеко не ушли...
Цитата
Может, Вам ещё вложенные стековые кадры с инструкциями enter/leave хочется в 8-битном МК ? smile.gif

Есть и такое, например у всей линейки МК от Fujitsu, начиная с 8-ми битников.
Цитата
Стек хорош для алгоритмов, когда размер данных, помещаемых в стек, предсказать сложно. Например, рекурсий. Для МК это непозволительная роскошь (по крайней мере, пока размер стека исчисляется сотнями байт). И подход к использованию стека в МК должен отличаться от принятого в софте настольных компьютеров.

Чаще необходима реентерабильность, которая без полноценногог стека нереализуема. Эта самая вещь позволяет экономить память и не ломать голову по ручному распределению памяти - экономия времени/нервов и крохотных ресурсов RAM МК.

ИМХО: Тащиться от асма в в век когда межпланетные корабли бороздят просторы вселенной как то не серьезно...


--------------------
"Как много есть на свете вещей, которые мне не нужны!" Сократ
Go to the top of the page
 
+Quote Post
Kopa
сообщение Jun 27 2006, 04:39
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(spf @ Jun 27 2006, 06:47) *
ИМХО: Тащиться от асма в в век когда межпланетные корабли бороздят просторы вселенной как то не серьезно...

Отчасти согласен, но в альтернативе кроме Си использую Forth ( при всей его непопулярностиsmile.gif
Что гораздо ближе к внутренностям контроллеров.
Есть мнение, что Си это высокоуровневый ассемблер заметно
удалившийся от прародителя.

P.S. MSP не было бы без PDP11. Жаль что урезали от способов адресации больше чем нужно.
На асме есть любители писать ОС для PC.
Если бы не переносимость, то это было бы оправдано.
А так надо изобретать универсальный ассемблер ( примерно, как в Algoritm Builder)
Go to the top of the page
 
+Quote Post
SpiritDance
сообщение Jun 27 2006, 04:51
Сообщение #5


Дух погибшего транзистора
****

Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288



Цитата(Kopa @ Jun 27 2006, 08:39) *
А так надо изобретать универсальный ассемблер ( примерно, как в Algoritm Builder)

Все изобретено до нас. IL из .NET вполне годится под определение универсального ассемблера. Универсальность просто как проавило достигается за счет уменьшения эффективности кода, то есть его заточенности под конкретную архитектуру. Так что ЯВУ как раз и выступают в роли таких универсальных ассемблеров.
Ну а собственно ассемблер мной лично используется уже довольно редко, только в тех участках кода где надо по максимуму использовать особенности аппаратной платформы, или там где без него просто не обойтись, как например совсем недавно в загрузчике для AVR.


--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
Go to the top of the page
 
+Quote Post
Kopa
сообщение Jun 27 2006, 05:04
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(SpiritDance @ Jun 27 2006, 07:51) *
Цитата(Kopa @ Jun 27 2006, 08:39) *

А так надо изобретать универсальный ассемблер ( примерно, как в Algoritm Builder)

Все изобретено до нас. IL из .NET вполне годится под определение универсального ассемблера. Универсальность просто как проавило достигается за счет уменьшения эффективности кода, то есть его заточенности под конкретную архитектуру.


Согласен, если не считать что он, как Java байт-код, заточен под стековую архитектуру
и остается проблема оптимальной генерации кода на регистровую архитектуру.
Плюс остается специфика системы команд контроллера, которую тоже непросто учесть.smile.gif

P.S. Встречный вопрос.
Подходит ли Форт под понятие универсального ассемблера из сравнения с IL:)
( промежуточного языка )
Go to the top of the page
 
+Quote Post
SpiritDance
сообщение Jun 27 2006, 11:28
Сообщение #7


Дух погибшего транзистора
****

Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288



Цитата(Kopa @ Jun 27 2006, 09:04) *
P.S. Встречный вопрос.
Подходит ли Форт под понятие универсального ассемблера из сравнения с IL:)
( промежуточного языка )

Честно говоря о форте знаю только то что он есть. И знаю что он уже довольно долгое время после своего появления остается экзотическим языком, так что за его универсальность я бы не поручился. Однако, повторюсь, с языком не знаком.


--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
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
|- - haker_fox   Цитата(CD_Eater @ Jun 27 2006, 05:30) Моё...   Jun 27 2006, 01:29
|||- - 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
- - beer_warrior   ЦитатаНо компиляторы используют обобщённые методы ...   Jun 28 2006, 02:34
|- - dxp   Цитата(beer_warrior @ Jun 28 2006, 09:34)...   Jun 28 2006, 03:48
- - 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
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


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


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