|
ASM: приказали долго жить?, Сколько еще продержится |
|
|
|
Jun 19 2006, 23:28
|
Участник

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

|
На досуге интересует мнение всех кто занимается программированием МК - коль долго еще возможно будет использовать ASM в разработках. Понимаю что тапочки и нужно спешить осваивать C (аппаратные возможности растут и проще написать A*B, например...). Но как сейчас какие плюсы - пишешь то что надо, не зависишь от уровня тупости разработчиков C компилятора, т.е. все на виду (предпочитаю надежность быстроте разработки). Но бесит реализация арифметики на ASMе. Ваше мнение, господа?
|
|
|
|
|
 |
Ответов
|
Jun 26 2006, 20:30
|
Частый гость
 
Группа: Новичок
Сообщений: 173
Регистрация: 3-09-04
Из: Moscow
Пользователь №: 595

|
dxp Я не говорю, что AVR существенно мощнее  ))))))) Однако был приведён всего единственный тест, результат которого мог быть предсказан заранее и не мог отражать реального соотношения производительностей на характерных задачах МК. Моя критика направлена не на утверждение о соотношении производительностей этих МК, а на метод доказательства этого утверждения. Несчёт "узкого горлышка", которое Вы обнаружили в малом количестве указателей у AVR и в неполноценном указателе стека. Это действительно нехорошо с точки зрения общепринятого способа компиляции с ЯВУ, но при программировании на АСМе это не вызывает каких-либо затруднений. У меня сложилась практика использовать в качестве указателей только X и Y, а регистр Z - для "временных" целей (то есть, не ассоциировать его с каким-то значением, постоянным по ходу выполнения всей программы). Если обрабатываем два массива - X и Y. Если работаем со структурой - Y+displacement. Если нужно прочитать из флеша (или временно нужен дополнительный указатель) - используем Z. В частности, я никогда не использовал Z для обращений вида Z+displacement, и в этом вижу даже некоторую избыточность. Трёх указателей всегда хватало. По поводу стека - при правильном распределении регистров использование стека минимально. Пихать в него параметры функций и создавать там локальные переменные - дурная привычка компиляторов с ЯВУ. Кстати, раньше, как Вы, наверное, помните, в x86 был тот же подход - кроме указателя стека (SP, относительно которого нельзя адресоваться к данным в стеке) для стековых операций резервировался ещё один регистр (BP, полноценный), полную аналогию чему наблюдаем в компиляторах под AVR. Может, Вам ещё вложенные стековые кадры с инструкциями enter/leave хочется в 8-битном МК ?  ) Стек хорош для алгоритмов, когда размер данных, помещаемых в стек, предсказать сложно. Например, рекурсий. Для МК это непозволительная роскошь (по крайней мере, пока размер стека исчисляется сотнями байт). И подход к использованию стека в МК должен отличаться от принятого в софте настольных компьютеров. Моё мнение - насаживание ЯВУ (напр., Си) на МК по своей природе противоестественно, но выполняется для благой цели - чтобы программисты, знакомые с ЯВУ, смогли писать прошивки. Ведь Атмелу, например, хочется продать побольше чипов, а ЯВУ - это хороший маркетинговый ход. Аналогия - чтобы продать больше компьютеров, их стали использовать как печатные машинки - тоже хороший маркетинговый ход. В результате компьютерами пользуются секретарши, а на МК программируют не знающие ассемблера прогеры. К чему это я ? Просто все "узкие горлышки" куда-то исчезают, как только забываешь про Си и начинаешь писать на ассемблере - под это дело AVR заточен вполне пристойно, и в плане компактности кода, и в плане быстроты выполнения инструкций, и в плане удобства программирования (не идеал, но близко).
|
|
|
|
|
Jun 27 2006, 03:47
|

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

|
Цитата(CD_Eater @ Jun 27 2006, 02:30)  Трёх указателей всегда хватало. Видимо задачи большего не требовали или желание всегда ограничивалось на корню.  Цитата По поводу стека - при правильном распределении регистров использование стека минимально. Опишите методику правильного распределения, причем безотносительно конкретного проца. Цитата Пихать в него параметры функций и создавать там локальные переменные - дурная привычка компиляторов с ЯВУ. ИМХО. Подобные мысли можно обосновать только плохой реализацией в проце работы со стеком. Цитата Кстати, раньше, как Вы, наверное, помните, в x86 был тот же подход - кроме указателя стека (SP, относительно которого нельзя адресоваться к данным в стеке) для стековых операций резервировался ещё один регистр (BP, полноценный), полную аналогию чему наблюдаем в компиляторах под AVR. Аналогия с x86 не впользу AVR, x86 разрабатывали 40 лет назад а AVR 10 и далеко не ушли... Цитата Может, Вам ещё вложенные стековые кадры с инструкциями enter/leave хочется в 8-битном МК ?  Есть и такое, например у всей линейки МК от Fujitsu, начиная с 8-ми битников. Цитата Стек хорош для алгоритмов, когда размер данных, помещаемых в стек, предсказать сложно. Например, рекурсий. Для МК это непозволительная роскошь (по крайней мере, пока размер стека исчисляется сотнями байт). И подход к использованию стека в МК должен отличаться от принятого в софте настольных компьютеров. Чаще необходима реентерабильность, которая без полноценногог стека нереализуема. Эта самая вещь позволяет экономить память и не ломать голову по ручному распределению памяти - экономия времени/нервов и крохотных ресурсов RAM МК. ИМХО: Тащиться от асма в в век когда межпланетные корабли бороздят просторы вселенной как то не серьезно...
--------------------
"Как много есть на свете вещей, которые мне не нужны!" Сократ
|
|
|
|
|
Jun 27 2006, 04:39
|
Знающий
   
Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861

|
Цитата(spf @ Jun 27 2006, 06:47)  ИМХО: Тащиться от асма в в век когда межпланетные корабли бороздят просторы вселенной как то не серьезно... Отчасти согласен, но в альтернативе кроме Си использую Forth ( при всей его непопулярности Что гораздо ближе к внутренностям контроллеров. Есть мнение, что Си это высокоуровневый ассемблер заметно удалившийся от прародителя. P.S. MSP не было бы без PDP11. Жаль что урезали от способов адресации больше чем нужно. На асме есть любители писать ОС для PC. Если бы не переносимость, то это было бы оправдано. А так надо изобретать универсальный ассемблер ( примерно, как в Algoritm Builder)
|
|
|
|
|
Jun 27 2006, 04:51
|

Дух погибшего транзистора
   
Группа: Свой
Сообщений: 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.
|
|
|
|
|
Jun 27 2006, 05:04
|
Знающий
   
Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861

|
Цитата(SpiritDance @ Jun 27 2006, 07:51)  Цитата(Kopa @ Jun 27 2006, 08:39)  А так надо изобретать универсальный ассемблер ( примерно, как в Algoritm Builder)
Все изобретено до нас. IL из .NET вполне годится под определение универсального ассемблера. Универсальность просто как проавило достигается за счет уменьшения эффективности кода, то есть его заточенности под конкретную архитектуру. Согласен, если не считать что он, как Java байт-код, заточен под стековую архитектуру и остается проблема оптимальной генерации кода на регистровую архитектуру. Плюс остается специфика системы команд контроллера, которую тоже непросто учесть.  P.S. Встречный вопрос. Подходит ли Форт под понятие универсального ассемблера из сравнения с IL:) ( промежуточного языка )
|
|
|
|
Сообщений в этой теме
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 страниц
1 2 >
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|
|