Как уменьшить количество сериалов

Тема в разделе "Arduino & Shields", создана пользователем Vector2019s, 9 июл 2021.

  1. Airbus

    Airbus Радиохулиган Модератор

    Я хотел.С самых первых постов.Но не хотел тему в Балаган превращать-сижу с пивком наблюдаю за Вами и не могу понять о чём спор-что вкуснее Круглое или жёлтое?
     
  2. SergeiL

    SergeiL Оракул Модератор

    Как по мне, если что-то требуется сделать именно на ассемблере, то проще сделать ассемблерную вставку в Си.
    Когда-то очень-очень давно, мой шеф прикалывался, говорил один пишет на Си с АСМ вставками (это я), второй (мой приятель) на Форте с АСМ вставками. Спрашивал, "А чего на ассемблере то не пишите?".
    Это если нужно было быстро что-то небольшое написать.
     
  3. Asper Daffy

    Asper Daffy Иксперд

    Таки да, но иногда гораздо удобнее синтаксически эту вставку выделить в отдельный ассемблерный файл, а вызывать функции из Си (как было у меня в примере несколькими постами выше).

    Дело в том, что в обычных вставках (типа там volatile asm { }) не воспользуешься макросами, теми же структурами и другими вкусняшками ассемблера. А в отдельном ассемблерном файле - пожалуйста. Так что я непосредственно в Си вставляю только уж совсем тривиальные куски (пару тройку команд), мало-мальски сложные вещи, вызываю из Си, но оформляю отдельным ассемблерным файлом.

    А так, чтобы программу целиком на ассемблере - уж и не помню, когда писал.
     
    Andrey12, KindMan и SergeiL нравится это.
  4. Airbus

    Airbus Радиохулиган Модератор

    Я лет 7 назад :) Потом появился этот гацкий Виртнг с его analogRead/analodWrite :D:D
     
    Andrey12 нравится это.
  5. a1000

    a1000 Гуру

    Что-то спор зашел в непроходимые дебри. А началось с терминологии. Является ли мнемоника процессорной инструкции машинным словом или нет?
    Обратимся к авторитету Юрия Ревича.
    Ассемблер - это не универсальный язык программирования, подобно С или
    Pascal, а просто несколько (не очень много) правил, по которым последовательность
    команд процессора, ·записанных в мнемоническом виде, может объединяться
    в программу. Программа сначала получается в текстовом формате (ее еще называют
    «исходным текстом)), «исходным кодОМ)), или просто «исходником»). Этот
    формат должен представлять собой «чистый текст» в однобайтовой кодировке, никакие
    другие форматы (вроде MS Word) тут не проходят категорически.
    Эту программу потом компилируют с помощью собственно ассемблера ( assembler
    - сборщик) - так называется программа, которая переводит текст с мнемоническими
    обозначениями в последовательность команд и данных, записанных уже
    в двоичной форме, и пригодную для загрузки в память контроллера. В принципе
    операция компиляции (иногда ее в данном случае еще называют ассемблированием)
    лишняя и служит только для удобства человеческого восприятия исходного
    текста программ.
    Мы за пример взяли очистку флага прерываний. Если подойти к вопросу по всей строгости закона то да CLI это не машинное слово. Это мнемоническое (символьное) обозначение. После ссемблирования мы получим строку
    :02000000F89472
    два байта информационной строки по нулевому адресу, код команды F894 и контрольная сумма 72.
    Является F894 машинной командой? Я не знаю Я представления не имею, что с этой строкой сделает дудка и что в реальности зальётся во флеш микроконтроллера. В какой момент этой эпопеи возникает машинное слово в чистом виде не столь принципиально.
    Если добавить переходы по меткам то в принципе чистый ассемблер на этом и заканчивается (могу и ошибаться) . Ни в одной новой и более продвинутой версии сборшика ассемблера ни одной новой процессорной инструкции появиться не может. Добавить их может только разработчик микроконтроллеров в новой версии камня. Все они отличаются набором директив.
    Для начала отметим, что все последующее изложение рассчитано на использование
    avrasm2, т. к. старый avrasm32 имеет заметно отличающийся набор директив компилятора.
    Правда, отличия в основном в сторону расширения для avrasm2 (и приближения
    к нотации языка С); потому много переделывать не придется.
    А что такое директива? Это физическое воплощение человеческой лени. Ну не хочется всё делать самому. Поручаем сборщику, и указываем это директивами. Не хотим ждать милости от разработчиков,обращаемся к макросам. И как писал DI HALT, а мой опонент у него безсовестно спёр - создаём свой язык с блэкджеком и шлюхами. :)
    Повторюсь опять - это моё частное мнение.
     
  6. Asper Daffy

    Asper Daffy Иксперд

    Опять поспорить решили?

    Ну, спорить я с Вами не буду, неинтересно, замечу только, что я не знаю кто такой Юрий Ревич и каков его авторитет. В посте #35 я привёл определение ассемблера из стандарта ISO/IEC/IEEE 24765, который называется "Systems and software engineering — Vocabulary". Если Юрий Ревич для Вас больший авторитет, чем международный стандарт - дело Ваше. О чём тут спорить можно?

    Удачи!
     
  7. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Выгодно по времени катать прогу на ЯВУ, компилить, дизассемблить в асм или лст, чистить код от "перестраховок" ЯВУ, добавить свое при желании, и скомпилить вновь уже ассемблером. Бывает до 30% памяти освобождается. Я так во времена ДОСа для ПК-шек делал и для PIC-ов после. В ДОСе дофига места занимали инструкции со стеком PUSH, POP, а в PIC-ах - Вотчдог.
     
    Последнее редактирование: 14 июл 2021