Про разные ассемблеры

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Аватара пользователя
kisssko
Открыл глаза
Сообщения: 52
Зарегистрирован: Пт янв 10, 2014 02:05:13
Откуда: Воронеж

Про разные ассемблеры

Сообщение kisssko »

Вынесено отсюда: http://radiokot.ru/forum/viewtopic.php?f=62&t=78185
ploop

BOB51 писал(а): за армы... это не для ассемблера игрушки... а может пока я их не очень готовить умею... :facepalm:
:beer:
Тут не согласен! Как раз писать на ассемблере ARM - одно сплошное удовольствие! Почти как высокоуровневое программирование. :)
Плюс основной потенциал армов раскрывается как раз при оптимизации на ассемблере. Компилятор их не всегда в полную мошь использует.

Зато вот с AVRками мне показалось, что совсем иначе. Как ни посмотришь код, создаваемый WinAVR - всё настолько компактно уложено,
что и оптимизировать уже нечего. А все архитектурно-специфические вещи уже реализованы в виде библиотек.
Да и система команд не очень удобна для ручного написания программ на ассемблере. :(
Основная проблема, что они 8-битные. А реализовывать там на асме 16 и 32 битную арифметику западло, учитывая, что компилятор Си
делает не хуже (код типовой, оптимизировать нечего). Единственный момент - компилятор слишком много кладёт push/pop в обработчик прерываний.
В остальном, использовать ассемблер для AVRок не вижу смысла. Важнее алгоритмическая оптимизация.
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15575
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Хитрые, необычные алгоритмы и код

Сообщение BOB51 »

А не подскажите случаем где сей компилятор водится? Мож чего новенького появилось. :)
Реклама
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Re: Хитрые, необычные алгоритмы и код

Сообщение BCluster »

kisssko писал(а): Плюс основной потенциал армов раскрывается как раз при оптимизации на ассемблере. Компилятор их не всегда в полную мошь использует.
А какой компилятор? По мне IAR делает отличный код.
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Re: Хитрые, необычные алгоритмы и код

Сообщение HHIMERA »

kisssko писал(а): Тут не согласен! Как раз писать на ассемблере ARM - одно сплошное удовольствие! Почти как высокоуровневое программирование. :)
Плюс основной потенциал армов раскрывается как раз при оптимизации на ассемблере. Компилятор их не всегда в полную мошь использует.
"А мужики то и не знали!"(С)
Пару примеров... в студию...
"Я не даю готовых решений, я заставляю думать!"(С)
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
kisssko
Открыл глаза
Сообщения: 52
Зарегистрирован: Пт янв 10, 2014 02:05:13
Откуда: Воронеж

Re: Хитрые, необычные алгоритмы и код

Сообщение kisssko »

HHIMERA писал(а):"А мужики то и не знали!"(С) Пару примеров... в студию...
И какие примеры нужны? О чём речь то? Про оптимизацию, или про простоту написания кода?
Если про оптимизацию... Первое, что бросается в глаза - на каждую переменную в .data прописывается адрес в коде,
хотя можно было бы один раз всего, и использовать смещения. Второе - в большинстве случаев можно использовать LDM/STM
вместо LDR/STR, но компилятор почему то этого не делает. И вообще, если присмотреться к коду, всегда можно найти, к чему придраться. :)
Реклама
Аватара пользователя
kisssko
Открыл глаза
Сообщения: 52
Зарегистрирован: Пт янв 10, 2014 02:05:13
Откуда: Воронеж

Re: Хитрые, необычные алгоритмы и код

Сообщение kisssko »

BCluster писал(а):А какой компилятор? По мне IAR делает отличный код.
GCC в основном. Keil вроде получше. IAR не видел, не знаю...
Реклама
AQ29
Прорезались зубы
Сообщения: 201
Зарегистрирован: Сб июл 30, 2011 21:00:24

Re: Про разные ассемблеры

Сообщение AQ29 »

kisssko писал(а):
Зато вот с AVRками мне показалось, что совсем иначе. Как ни посмотришь код, создаваемый WinAVR - всё настолько компактно уложено,
что и оптимизировать уже нечего. А все архитектурно-специфические вещи уже реализованы в виде библиотек.
Да и система команд не очень удобна для ручного написания программ на ассемблере. :(
Основная проблема, что они 8-битные. А реализовывать там на асме 16 и 32 битную арифметику западло, учитывая, что компилятор Си
делает не хуже (код типовой, оптимизировать нечего). Единственный момент - компилятор слишком много кладёт push/pop в обработчик прерываний.
В остальном, использовать ассемблер для AVRок не вижу смысла. Важнее алгоритмическая оптимизация.
Для AVR есть ассемблер Algorithm Builder, на котором можно прекрасно писать, как на языке высокого уровня.
И с многобайтной арифметикой там хорошо, надо только использовать готовые подпрограммы с параметрами, фактически функции. Например, чтобы умножить две двухбайтные переменные А и В, можно написать одну строчку

Umnojenie(A,B)

и все готово, результат будет в четырехбайтной переменной.
Аватара пользователя
menzoda
Вымогатель припоя
Сообщения: 535
Зарегистрирован: Вт авг 28, 2012 22:21:33

Re: Про разные ассемблеры

Сообщение menzoda »

Подтверждаю, что ARMCC выдает иногда очень интересные вещи вроде целой портянки команд вместо пары-тройки.
Ответить

Вернуться в «Разные вопросы по МК»