Ассемблер (ASM) для AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Ответить
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

Добавлено after 18 minutes 41 second:
я еще немного "подменю тему".

сам термин "ассемблер" произошел от слова assembling, которое, если верить гуглопереводчику, означает "монтаж, сборку, установку". то есть роль ассемблера в проекте - это роль каменщика на стройке: из небольших (и фактически "неделимых") элементов собирать нечто сложное по замыслу архитектора. и этот каменщик абсолютно не беспокоится тем, что кирпичи для более высокого уровня "строителей" (того же архитектора, прораба, логиста и т.п. участников проекта) сами по себе не интересны - на более высоких уровнях все работают со "стройматериалами", палеттами кирпичей, грузовиками, контейнерами и т.п. абстракными обозначениями. любой каменщик скажет вам, что сложил дом из 10,5 тысяч кирпичей, а про тот же дом логист скажет "понадобилось 2,5 грузовика кирпичей". а архитектор вообще ограничится фразой "я спроектировал и построил этот дом".

все это и говорит о необходимом и достаточном уровне абстракций: ассемблеру - байты и такты, линкеру - области памяти, ЯВУ - переменные и классы, программисту - модули и алгоритмы. и на каждом уровне принципиальной необходимости понимать "устройство проекта" в целом, а так же сущность терминологии на уровне выше/ниже, нет: достаточно знать и понимать/использовать только собственный уровень и "интерфейс" между уровнями. каменщик должен знать лишь тот факт, что к началу его смены кирпич будет подан, и марка его будет той, что надо, а помощники поднесут раствор нужного качества.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 25862
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="ARV",url="/forum/viewtopic.php?p=3805250#p3805250"]проблема взаимодействия ассемблерных модулей с модулями на ЯВУ беспокоит явное меньшинство всех разработчиков...[/uquote]
Очень много слов. Я утомился.
Если Вы относитесь к большинству, тогда зачем пишите всякую ерунду про макросы для меньшинства?
На том я и закончу, пожалуй.
No more comments.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15788
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

МЛИН...
Сказал же , что "обсасывание косточек" это не тут, а у меня на КОТУИНКЕ делать надо - там обсуждения "взаимовыгодного восприятия" с попытками вытрясти из имеющегося лучшие крупинки для всеобщей пользы.
8)
Как кстати и "слэнг" по многофайловикам на ассемблере.
Я а АВРкины проекты добавил шапку по подобию микрочипа с описанием конфигурации по умолчанию и для текущего проекта.
Правда как блок комментария - это все же не аналогия для компилятора. Однако таки штука весьма полезная!
:hunger:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

КРАМ писал(а):Если Вы относитесь к большинству, тогда зачем пишите всякую ерунду про макросы для меньшинства?
я из большого спорта вышел по возрасту, и сейчас отношусь к зрителям. но былое все-таки бередит... :)))
а про макросы пишу в строгом соответствии с темой топика: максимальное использование доступных в ассемблере возможностей для упрощения решения задач. без привнесения лишних сущностей вроде ООП и переменных :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Открыл глаза
Аватара пользователя
Сообщения: 63
Зарегистрирован: Пн апр 20, 2015 14:00:32

Сообщение Мяукните! »

Встретился довольно любопытный ассемблер. Связался с автором, попросил улучшить поддержку русского. Он тут же улучшил :)

Но когда этот фикс выйдет, неизвестно..

Ассемблер шикарный, на мой взгляд.


p.s. попробовал сам собирать исходники - бесполезно.. у меня это никогда не получалось...

Добавлено after 2 hours 35 minutes 39 seconds:
p.s. Альфред выпустил новую сборку 1.42Bld158 (2020-03-21).

В идеале, должны поддерживаться на русском:

- имена меток (подпрограмм)
- имена макросов
- имена параметров в макросах

Вечером потестирую. И если всё работает, этот ассемблер становится близок к идеалу.

Одно непонятно, как получилось, что за столько лет, я впервые о нём слышу?? :shock:
Контактная информация:
Реклама
Мучитель микросхем
Аватара пользователя
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

Сообщение shonty »

Мяукните! писал(а):В идеале, должны поддерживаться на русском:

- имена меток (подпрограмм)
- имена макросов
- имена параметров в макросах
Думаю это не столь важно. Если человек ориентируется в куче операторов из сокращений и аббревиатур на английском языке, то наличие меток на русском погоду не поменяет. Тем более всегда можно добавить коментарий.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15788
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

На сегодня более актуальной является возможность/навыки/методы написания многофайловых проектов под "чистым ассемблером".
8)
Открыл глаза
Аватара пользователя
Сообщения: 63
Зарегистрирован: Пн апр 20, 2015 14:00:32

Сообщение Мяукните! »

[uquote="ARV",url="/forum/viewtopic.php?p=3804826#p3804826"]рекомендую обратить свой взор на avr-as (gnu-as) с его мощной (хоть и несколько устаревшей) системой макросов[/uquote]Скорей всего, она или не была мощная. Или действительно устарела. До сих пор я писал исключительно на as из набора binutils. Но чем плотнее пишешь, тем больше натыкаешься на ограничения макросов.... И не только... Моя заветная мечта была, избавиться от binutils раз и навсегда.

Но когда я увидел AS то аж прыгал до потолка!

Изучаю документацию :tea:
Контактная информация:
Это не хвост, это антенна
Сообщения: 1495
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

Расскажу про свой опыт. В 2007 году я понял, что пора переходить на микроконтроллеры. В Новосибе была такая фирма Аргуссофт. И в офисе этой фирмы мне попался каталог комплектухи. В этом каталоге был краткий обзор основных архитектур МК. По этим кратким описаниям я понял, что мне подходят AVR. Я купил отладочную плату STK-500 и несколько книг по МК AVR. Уже не помню подробностей, но си я не рассматривал, я его тогда вообще не знал, как-то сразу остановился на ассемблере, и книги были с примерами на ассемблере. И я писал свои программы на ассемблере несколько лет. Был ярым его поклонником. Через несколько лет у меня набралось много своих наработок, я активно использовал макросы и конечные автоматы. В определенный момент я понял, что ассемблер себя исчерпал. Особенно при создании проектов с развитыми меню. Здесь наступил предел. Потому что, на таком уровне уже идет оперирование объектами. Я поступил так, продолжал делать проекты на ассемблере, параллельно стал изучать си. Было сложно, скажу честно. Несколько раз бросал, возвращался. Когда появились первые успехи, я остановил все проекты на ассемблере и углубился в си. Получилось. Позже перевел многие наработки с ассемблера на си. Когда я это сделал, снова взялся за проекты, но уже на си.
Так вот, к чему я все это написал. Ассемблер нужно знать. Знание ассемблера очень сильно меня выручало, когда были затыки на си, и мне приходилось в дизассемблере разбираться, где проблемы, косяки. Когда вы начинаете осознавать, что ассемблер исчерпал себя, переходите на ЯВУ. Не бойтесь - это главное. Останавливает страх сложностей и инерция. Когда я перешел на си, и у меня появились первые успехи, я жалел лишь об одном, что страх сложностей застил мне глаза, что я не сделал этого раньше.

Дополню. Еще когда я писал на ассемблере, я всегда смотрел вперед. Приемы программирования, алгоритмы, подходы. То есть на более высоком уровне. Есть два подхода. Проектирование снизу вверх. Тонешь в регистрах и ячейках памяти. Проектирование сверху вниз. Это когда ты мыслишь на уровне проекта в целом. Системно. Это самое главное. И тогда не важно какой язык программирования.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 20117
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

[uquote="Demiurg",url="/forum/viewtopic.php?p=3816532#p3816532"]переходите на ЯВУ[/uquote]
Надеюсь, это язык высокого уровня, а не Java? :)
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Мучитель микросхем
Аватара пользователя
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

Сообщение shonty »

Что ЯВУ, что JAVA, чем выше любовь уровень, тем выше требования к ресурсам.

Немного прооффтоплю: вспоминаю время, когда winXP летал на 256 оперативы и одноядерном 1,6 проце. И большего счастья и не желалось. Сейчас уже не знаешь какое железо покупать, причём чтобы через пару лет оно не устарело. И это лишь для того, что бы решать простые задачи.

Тоже самое и с МК. А забить 8 или даже 32кб кодом на ассемблере ни разу не влом, тем более основные ресурсы (у меня) ест графика под дисплеи.
Грызет канифоль
Сообщения: 263
Зарегистрирован: Сб июл 30, 2011 21:00:24

Сообщение AQ29 »

[uquote="afz",url="/forum/viewtopic.php?p=3805057#p3805057"]А вот на старых системах были шикарные макроассемблеры - что на Системе-360/370, что на PDP-11. Посмотрели бы, как это делается "по-взрослому", а потом и сочиняли асм для своего АВР...[/uquote]
Что «шикарного» есть в этих макроассемблерах? Хочется писать «по-взрослому».
[uquote="ARV",url="/forum/viewtopic.php?p=3805259#p3805259"]а про макросы пишу в строгом соответствии с темой топика: максимальное использование доступных в ассемблере возможностей для упрощения решения задач. без привнесения лишних сущностей вроде ООП и переменных :)))[/uquote]
Неясно, почему вы против переменных в ассемблере.
Использование переменных резко упрощает написание программ. Время написания программы меньше, читаемость лучше, отладка проще - почему же их не использовать?
Конечно, в ассемблере для переменных определены все необходимые операции: копирования, сравнения, сложения, сдвига и т.д.
[uquote="ARV",url="/forum/viewtopic.php?p=3805250#p3805250"]сам термин "ассемблер" произошел от слова assembling, которое, если верить гуглопереводчику, означает…
все это и говорит о необходимом и достаточном уровне абстракций: ассемблеру - байты и такты, линкеру - области памяти, ЯВУ - переменные и классы, программисту - модули и алгоритмы.[/uquote]
Думаю, «гуглопереводчик» не определяет «необходимый и достаточный уровень абстракций».
При использовании ассемблера в качестве самостоятельного языка должна быть написана вся программа в целом, а не только «байты и биты».
Я использовал понятие ассемблер в расширенном толковании - это язык, в котором есть все ассемблерные команды и, соответственно, есть вся гибкость ассемблера.
[uquote="Мяукните!",url="/forum/viewtopic.php?p=3816038#p3816038"]Встретился довольно любопытный ассемблер.
Ассемблер шикарный, на мой взгляд.
В идеале, должны поддерживаться на русском:
- имена меток (подпрограмм)
- имена макросов
- имена параметров в макросах
Вечером потестирую. И если всё работает, этот ассемблер становится близок к идеалу.[/uquote]
Вызов подпрограмм с параметрами есть в бесплатном российском ассемблере для АВР уже лет 15.
Что шикарного в этом ассемблере?
Друг Кота
Аватара пользователя
Сообщения: 15788
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Все вышеперечисленные вопросы можно и средствами штатного avrasm2 решить.
Возможны проблемы только в случае модулей, каждый из которых имеет в своем составе участки инициализации, привязанные в определенным разделам памяти (разделение на сегменты и именованные разделы внутри сегментов).
И то... минимум вручную решаемо.
8)
В противном случае потребуется многокомпонентный компилятор с линкером и библиотекарем да с прописыванием командной строки с учетом всех входящих в состав проекта компонентов (каждый раз заново ручками).
Там свои заморочки.
8)
Последний раз редактировалось BOB51 Пт мар 27, 2020 12:01:11, всего редактировалось 1 раз.
Модератор
Аватара пользователя
Сообщения: 19100
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

AQ29 писал(а):Неясно, почему вы против переменных в ассемблере.
а что такое "переменная" в ассемблере?
а то тут многие, в том числе и я, считают, что в ассемблере нет переменных.
AQ29 писал(а):Использование переменных резко упрощает написание программ
каким образом? и в чем заключается эта "резкость"?
AQ29 писал(а):Я использовал понятие ассемблер в расширенном толковании - это язык, в котором есть все ассемблерные команды и, соответственно, есть вся гибкость ассемблера.
а что такое ассемблер в узком толковании? и сколько толкований существует у ассемблера?
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Мучитель микросхем
Аватара пользователя
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

Сообщение shonty »

[uquote="AQ29",url="/forum/viewtopic.php?p=3819085#p3819085"]Неясно, почему вы против переменных в ассемблере.
Использование переменных резко упрощает написание программ. Время написания программы меньше, читаемость лучше, отладка проще - почему же их не использовать?[/uquote]
Если край как нужны переменные, то нет проблем. Вполне реализуемо через макросы:

LCD_FIELD 25, 305, 230, 230
Поле определяет область дисплея для заливки или вывода изображения/символов.

А вот вам строковая:
LOAD_COLOR_FRONT yellow

Конечно нет привычного для яву предварительного декларирования. Но опять же: переменная - это абстракция и всяк её может воспринимать по разному. А восприятие, как известно, важнее реальности.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

AQ29 писал(а):Неясно, почему вы против переменных в ассемблере.
потому что они, как сущность, в ассемблере отсутствуют.
AQ29 писал(а):Я использовал понятие ассемблер в расширенном толковании - это язык, в котором есть все ассемблерные команды и, соответственно, есть вся гибкость ассемблера.
ну понятно... рекурсивное определение через самого себя... я еще со времен аббревиатуры GNU (расшифровка рекурсивная: GNU Not Unix) был подобным определением шокирован. это ведь масло масляное...
shonty писал(а):Если край как нужны переменные, то нет проблем. Вполне реализуемо через макросы
дело в том, что назвав стол словом "верблюд", вы не получаете животное, а получаете переименованный стол. в ассемблере нет сущности с названием "переменная", поэтому переименованием других сущностей её никак не получить. переименованный макрос остается макросом.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Мучитель микросхем
Аватара пользователя
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

Сообщение shonty »

Конечно стол верблюдом не назвать, потому как эти определения привязаны к конкретным материальным объектам.
Переменная же - абстракция. Такая же абстракция как "телефон", которым в разные времена именовали разные объекты. На данный момент телефоном вообще компьютеры называют. А по "головным телефонам" даже позвонить ни кому нельзя.
Википедия не панацея, но статья по запросу "Переменная" даёт более широкое описание.
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

Учитывая, что ассемблер это запись опкодов процессора латинскими буквами (ну плюс горстка синтаксического сахара вроде меток и макросов) - как именно должны записываться ваши переменные и что из себя представлять?
Дурь про русские имена переменных и прочего не хочется даже комментировать - представьте аналогичную ситуацию, где вам достанется код на китайском.
Мучитель микросхем
Аватара пользователя
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

Сообщение shonty »

[uquote="COKPOWEHEU",url="/forum/viewtopic.php?p=3819356#p3819356"]как именно должны записываться ваши переменные и что из себя представлять?[/uquote]
2. ".... переменная определяется как имя, с которым может быть связано значение, или даже как место (location) для хранения значения." ©
"... либо адресуемая иным способом область памяти, адрес которой можно использовать для осуществления доступа к данным. Данные, находящиеся в переменной (то есть по данному адресу памяти), называются значением этой переменной." ©

1. sts var, Rx
lds Rx, var

Кто как, но я воспринимаю это именно как переменную.
В ЯВУ же понятие "переменная" размыто.
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

В ассемблере это делается метками в .dseg
Но поскольку метка ничего не говорит о размере или типе данных, называть ее именно переменной - сильно льстить.
Ответить

Вернуться в «AVR»