А знаете ли вы што: ассемблер в arduino ide

Тема в разделе "Флудилка", создана пользователем DetSimen, 29 янв 2020.

  1. DetSimen

    DetSimen Guest

    С удивлением недавно узнал, что оказывается, если создать файл с расширением .S (именно с большой S) и покласть его в директорию с .ino, то в этом файле можно невозбранно писать текст не на встроенном в Си ассемблере, а на "чистом", без всяких кавычек и прочей х-ни.

    Создайте какой нить простенький проект в Arduino IDE. Потом в любом текстовом редакторе наберите

    Код (C++):
    #include <avr\io.h>


    .global MyAsmFunc
    MyAsmFunc:
        ldi        r24,lo8(str_01)        ; пхаем в возвращаемые регистры
        ldi        r25,hi8(str_01)        ; адрес строки лежащей по метке str_01
        ret

    ; Эта строка валяеца в PROGMEM
    str_01:
        .asciz "My unique string in PROGMEM"
    и сохраните его как AsmTest.S в той же директории, что и файл проекта .ino

    В самом проекте напишите

    Код (C++):
    /*
        Name:       AsmTest.ino
        Created:    23.01.2020 14:36:10
        Author:     DtS
    */

    #include <Arduino.h>

    // Функции из ассемблера не подвергаюца "маскарадингу" лжывого С++
    // поэтому они мало того, что "extern", дак еще и "extern "C""
    //
    extern "C" {
        extern __FlashStringHelper *MyAsmFunc(void); // функция должна возвратить указатель на строку в PROGMEM
    }


    void setup()
    {
        Serial.begin(115200);
        delay(250);
        Serial.println(F("AsmTest started...\n"));

    // печатаем нашу нещасную строку
    //  
        Serial.println(MyAsmFunc()); // печать строки из PROGMEM
    }

    void loop()
    {
    }
    ничего никуда подключать не надо, компилятор как-то сам понимает, что AsmTest.S тоже надо транслировать.

    Запустите и посмотрите что получица.

    Мне счас приходится ковыряться с AVR ассемблером, поэтому буду разбираться, если интересно, буду писать заметки.
     
    Последнее редактирование модератором: 29 янв 2020
    arkadyf, DIYMan, issaom и 6 другим нравится это.
  2. Asper Daffy

    Asper Daffy Иксперд

    Таки да, дида. Именно так я и писал работу с адресуемыми светодиодами.
     
    DIYMan и DetSimen нравится это.
  3. DetSimen

    DetSimen Guest

    у мня таких нет, но срочно надо в Тини85 утолкать то, что в 328 не влазит, да еще с Pico Power. :)
    Вот и потянуло на прекрасное.
     
    DIYMan нравится это.