Страница 1 из 5

Ассемблерная вставка в FLProg

Добавлено: 20 мар 2025, 10:05
dstrufanov
Сообщение удалено

Re: Ассемблерная вставка в FLProg

Добавлено: 20 мар 2025, 10:24
fefar51702
так компилит

Код: Выделить всё

bool I1_264253028_1 = false;
bool I2_264253028_1 = false;
bool O_264253028_1 = false;

void setup() {
  pinMode(2, INPUT);
  pinMode(3, INPUT);
  pinMode(4, OUTPUT);
}

void loop() {
  I1_264253028_1 = digitalRead(2);
  I2_264253028_1 = digitalRead(3);

  asm volatile (
    "lds r24, %[input1] \n\t"
    "lds r25, %[input2] \n\t"
    "and r24, r25      \n\t"
    "sts %[output], r24 \n\t"
    :
    : [input1] "m" (I1_264253028_1),
      [input2] "m" (I2_264253028_1),
      [output] "m" (O_264253028_1)
    : "r24", "r25"
  );

  digitalWrite(4, O_264253028_1);
}

Re: Ассемблерная вставка в FLProg

Добавлено: 20 мар 2025, 10:40
dstrufanov
Сообщение удалено

Re: Ассемблерная вставка в FLProg

Добавлено: 20 мар 2025, 10:53
dstrufanov
Сообщение удалено

Re: Ассемблерная вставка в FLProg

Добавлено: 20 мар 2025, 11:13
fefar51702
это снова решили поднять вопрос о вдохнуть жизнь больших проектов в маленькие мк ?
ну на асемблере вы может и понаделаете блоки которые пошустрее будут и полегче но они же спецефичные под мк заточены будут
а экоинс борется за многоплатформеность и ваша тематика как и предыдущие останется попытки других

обьём тот же потомучто это не чистый асемблер а лиш вставки без всяких регистров и оптимизаций

Re: Ассемблерная вставка в FLProg

Добавлено: 20 мар 2025, 11:23
dstrufanov
Сообщение удалено

Re: Ассемблерная вставка в FLProg

Добавлено: 20 мар 2025, 12:18
fedor37
dstrufanov писал(а): 20 мар 2025, 10:53
fefar51702 писал(а): 20 мар 2025, 10:24 так компилит
Попробовал. Да, компилируется. Объем получается почти такой же, как у штатного блока 2И. Надо пробовать еще сделать входы и выход на ассемблере, только разобраться бы в этом китайском синтаксисе :D
а для чего это нужно?
в чем профит?

Re: Ассемблерная вставка в FLProg

Добавлено: 20 мар 2025, 12:22
dstrufanov
Сообщение удалено

Re: Ассемблерная вставка в FLProg

Добавлено: 20 мар 2025, 13:11
fefar51702
асемблер это несовсем ко мне
я с ним знаком самоучкой во времена когда нам ещё пытались в голову запихать мёртвый бейсик когда в других технарях уже паскаль крутили
мне больше с++ но и то по интересующей меня тематики какого нить проекта углубиться

вы выдернули кусок асемблера связь переменных с памятью
м потомучто лежит в памяти если было р то в регистре
в конце потомучто структура такая написания
пустое потомучто туда надо было запихать выходной операнд из входных

Re: Ассемблерная вставка в FLProg

Добавлено: 20 мар 2025, 13:17
dstrufanov
Сообщение удалено

Re: Ассемблерная вставка в FLProg

Добавлено: 20 мар 2025, 13:38
dstrufanov
Сообщение удалено

Re: Ассемблерная вставка в FLProg

Добавлено: 20 мар 2025, 13:40
Phazz
dstrufanov писал(а): 20 мар 2025, 13:38 Кстати, кто-нибудь в курсе как в FLProg хранятся булевы переменные? Они занимают байт, слово? Хранятся в младшем бите?
Занимают байт.

Re: Ассемблерная вставка в FLProg

Добавлено: 20 мар 2025, 15:39
fefar51702
в чистом после ставится
тут перед

а поповоду уменьшить память то я делал себе блок на меморифри и он мне слал в монитор порта оставшуюся память оперативы
и так контролируя её после каждого именения кода выбирал альтернативные участки которые менее её пожирают ну или старался их обойти
у меня была задумка как то большой текст хранить в епроме всё таки 1кб халявы а вызывать его только помере необходимости и в моменты несильно нагруженой памяти но пока не до неё но в процессе обдумывания находится

Re: Ассемблерная вставка в FLProg

Добавлено: 20 мар 2025, 15:41
fefar51702
да и вообще подумываю создать блок который бы следил за утечкой оперативной памяти из за дырявого кода а там уже решать обход что вызвало её

Re: Ассемблерная вставка в FLProg

Добавлено: 20 мар 2025, 15:58
Phazz
fefar51702 писал(а): 20 мар 2025, 15:41 да и вообще подумываю создать блок который бы следил за утечкой оперативной памяти из за дырявого кода а там уже решать обход что вызвало её
Сделать такой блок не сложно совсем. А вот найти почему утекает, это задача посложнее

Re: Ассемблерная вставка в FLProg

Добавлено: 20 мар 2025, 16:08
fefar51702
но подождите мы же говорим о постепенном написании кода и постоянным мониторингом
и как всё поплыло то откатываемся и проверям по новой и пробуем обойти этот момент альтернативой
там вроде как от стринга она начинает дырявиться упоминалось что лучшим решением использовать чар вместо стринг ибо фиксировано будет чем динамически да ещё с фрагментацией

Re: Ассемблерная вставка в FLProg

Добавлено: 20 мар 2025, 20:44
fedor37
память утекает когда динамически создается массив из кучи heap.

Re: Ассемблерная вставка в FLProg

Добавлено: 21 мар 2025, 19:22
dstrufanov
Сообщение удалено

Re: Ассемблерная вставка в FLProg

Добавлено: 21 мар 2025, 19:28
Phazz
dstrufanov писал(а): 21 мар 2025, 19:22 Сделал блоки входов и выхода на ассемблере:
asm_and.png
Схема 2И на асме занимает 534 байта памяти программ и 15 байт ОЗУ, схема 2И на штатных блоках занимает 942 байта памяти программ и 9 байт ОЗУ:
flp_and.png
А как меняется расход памяти при увеличении количества блоков?

Re: Ассемблерная вставка в FLProg

Добавлено: 21 мар 2025, 19:32
dstrufanov
Сообщение удалено