Ассемблер для amperka js

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем N00B, 5 окт 2021.

  1. N00B

    N00B Нуб

    Добрый день, есть у кого нить опыт написания кода на ассемблере, для амперки на джиэсе? Нужно реализовать функции отрисовки в драйвере ILI9341:
    Код (Javascript):
     setPixel:function(x,y,c){
          ce.reset();
          spi.write(0x2A,dc);
          spi.write(x>>8,x,(x+1)>>8,x+1);
          spi.write(0x2B,dc);
          spi.write(y>>8,y,(y+1)>>8,y+1);
          spi.write(0x2C,dc);
          spi.write(c>>8,c);
          ce.set();
        },
        fillRect:function(x1,y1,x2,y2,c){
          ce.reset();
          spi.write(0x2A,dc);
          spi.write(x1>>8,x1,x2>>8,x2);
          spi.write(0x2B,dc);
          spi.write(y1>>8,y1,y2>>8,y2);
          spi.write(0x2C,dc);
          spi.write({data:String.fromCharCode(c>>8,c), count:(x2-x1+1)*(y2-y1+1)});
          ce.set();
        }
    Гордон говорит, что это должно ускорить время отрисовки.
     
  2. b707

    b707 Гуру

    хм... это что за ассемблер такой? с командами типа spi.write() ?
     
    issaom нравится это.
  3. Airbus

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

    А кто такой Гордон?Этот?
    [​IMG]
     
    issaom нравится это.
  4. b707

    b707 Гуру

    вообще "ускорить время отрисовки" можно отказом от js и переходом на Си :)
     
  5. N00B

    N00B Нуб

    это не ассемблер это джиэс, надо реализовать этот код на ассемблере.
    Это юмор у вас такой?
    https://ru.wikipedia.org/wiki/Espruino
    Отличное решение! Но мне не подходит, потому что у меня искра джиэс и потому что я не знаю Си, впрочем как и ассемблер.
     
    Последнее редактирование: 6 окт 2021
  6. KindMan

    KindMan Гуру

    Насколько я знаю, Javascript для ARM это интерпретатор. В Еspruino есть возможность делать вставки на ассемблере?
    В интернете есть статьи о подключении ILI9341 в одноплатникам, там на них спокойно выводиться окружение рабочего стола. Если передача просто по SPI, то чего тут ускорять. Скорость передачи у вас какая?
     
  7. Asper Daffy

    Asper Daffy Иксперд

    Тогда какая разница на чём писать, на Си или на ассемблере?
     
  8. N00B

    N00B Нуб

    разница в том, что на Си нет возможности сделать такой функционал, а на ассемблере есть:
    http://www.espruino.com/Assembler#stm32f4-espruino-pico-
    Возможность как раз таки есть - E.asm(callspec, assemblycode,...), скорость максимальная, подобрал опытным путем. Про увеличении скорости на ассемблере, написал Гордон (для тех кто не знает или снова захочет потролить это создатель Espruino).
     
  9. b707

    b707 Гуру

    Чего на Си "нет возможности"? Записать в GPIO ? -вы бредите
    Слушайте. если вы в Си, по вашим же словам. валенок - откуда вы взяли что на нем можно, а что нельзя?
    По вашей же ссылке упомянуты регистры BSRR и BRR, писать в которые на Си можно напрямую. Вот эта одна строка эквивалентна тому ассемблерному коду, что показан по ссылке:

    Код (C++):
    GPIOA->BSRR = (1<<13)|(1<<14)|(1<<15);
     
    Последнее редактирование: 6 окт 2021
  10. N00B

    N00B Нуб

    Я имел ввиду записать кусок кода на Си в коде JS. А взял я это со слов Гордона
    upload_2021-10-6_16-16-37.png
     
  11. b707

    b707 Гуру

    есть подозрение, что встраивать ассемблер в искру-js умеют на планете, кроме самого Гордона. человек 20...
    А на Си для STM32 пишут миллионы.
     
  12. N00B

    N00B Нуб

    Возможно. Но если делать, как предлагаете вы, надо:
    - поменять контроллер
    - сесть за изучение Си
    - переписать код который уже имеется.
    В другом случае надо всего лишь добавить в драйвер немного кода. Да, тоже придется разобраться с ассемблером, но не надо будет переделывать весь скетч. Вроде проще же, не?
     
  13. b707

    b707 Гуру

    наверно да.
    Ну. удачи
     
    Airbus нравится это.
  14. Asper Daffy

    Asper Daffy Иксперд

    Возможность есть на всём. Проблема не в том, что нет возможности, а в том, что Вы этого не умеете ни на Си, ни на ассемблере :-(
     
  15. Asper Daffy

    Asper Daffy Иксперд

    Посмотрел. Используется нестандартный JIT-ассемблер. Адресация к данным JS - прямая (а у них очень непростой формат). В общем, это фича для профи. Если Вы думаете, что чуток поковыряетесь методом тыка и освоите - Вы ошибаетесь.

    Впрочем, ковыряйтесь. Или через пару лет Вы станете профи, или Вам это надоест раньше. Но удовольствие получите.
     
  16. N00B

    N00B Нуб

    Если бы я знал Си, то я бы купил ардуину)))). Самый простое решение, это смириться и юзать как есть )))).
     
  17. b707

    b707 Гуру

    Отличнй повод начать изучать.
    я тоже почти не знал Си. пока не купил ардуину
     
  18. ИгорьК

    ИгорьК Гуру

    Не покупайте Ардуино. У покупки, кроме изучения Си, много косвенных последствий. Некоторые проявились даже в этой теме.
     
  19. Airbus

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

    Да еще какие последствия!
     
  20. parovoZZ

    parovoZZ Гуру

    увы, программирование не пишется опытным путём. Сперва составляется алгоритм работы и только потом пишется код.

    это так не работает.