Страница 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И. Надо пробовать еще сделать входы и выход на ассемблере, только разобраться бы в этом китайском синтаксисе
а для чего это нужно?
в чем профит?
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
Сообщение удалено