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

Создаем свой блок. Вопросы, помощь знатоков.
Аватара пользователя
fefar51702
Сержант
Сообщения: 248
Зарегистрирован: 26 июн 2022, 07:35
Имя: Валера
Благодарил (а): 1 раз
Поблагодарили: 5 раз

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

Сообщение fefar51702 »

А разве ин и оут нельзя было упрятать в один блок ?
И насколько он стал скоростнее в плане количества цыклов в сек это более интересно
Конечно это совсем нечестное сравнение у Сергея блок построен на стандартных медленных функциях чтения и записи
Можно попробовать поставить переменные который будет состояние пинов и тогда луп закрутится быстрее Ну эта тема только будет работать если пины вялоизменяющиеся сигналы имеют Зато скорее всего на разных МК заработает
Ну а можно переделать всё на регистры.
Кстати вы меня натолкнули на мысль надо будет толкнуть её для всей программы

Кстати у вас оперативная память в вашем блоке стало больше чем в штатном а вся затея как раз таки идёт как снизить потребление оперативы в написании кода
Аватара пользователя
dstrufanov
Сержант
Сообщения: 195
Зарегистрирован: 07 янв 2024, 12:43
Имя: Дмитрий
Благодарил (а): 23 раза
Поблагодарили: 35 раз

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

Сообщение dstrufanov »

Сообщение удалено
Последний раз редактировалось dstrufanov 13 июн 2025, 22:58, всего редактировалось 2 раза.
Аватара пользователя
dstrufanov
Сержант
Сообщения: 195
Зарегистрирован: 07 янв 2024, 12:43
Имя: Дмитрий
Благодарил (а): 23 раза
Поблагодарили: 35 раз

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

Сообщение dstrufanov »

Сообщение удалено
Последний раз редактировалось dstrufanov 13 июн 2025, 22:58, всего редактировалось 1 раз.
Аватара пользователя
fefar51702
Сержант
Сообщения: 248
Зарегистрирован: 26 июн 2022, 07:35
Имя: Валера
Благодарил (а): 1 раз
Поблагодарили: 5 раз

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

Сообщение fefar51702 »

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

Нужно взять пин поставить его в начале кода и перевести в режим регистра поставить на нём единицу и в конце кода перевести его в ноль и померить это анализатором сигнала но лучше конечно померить осциллографом например мой анализатор даст погрешность плюс-минус 42 нс по-моему а осциллограф даст У меня погрешность плюс-минус 5 наносекунд к этому импульсу и через него вычислить частоту

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

Но в таком случае да можно тогда сидеть фантазировать как вы высчитывать сколько частота процессора выдаст вам на такт по времени сколько каждая инструкция затратит на это времени тактов просуммировать и говорить всем что чисто теоретически там такая-то частота исполнения без всякого Пина
Аватара пользователя
dstrufanov
Сержант
Сообщения: 195
Зарегистрирован: 07 янв 2024, 12:43
Имя: Дмитрий
Благодарил (а): 23 раза
Поблагодарили: 35 раз

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

Сообщение dstrufanov »

Сообщение удалено
Последний раз редактировалось dstrufanov 13 июн 2025, 22:59, всего редактировалось 1 раз.
Аватара пользователя
dstrufanov
Сержант
Сообщения: 195
Зарегистрирован: 07 янв 2024, 12:43
Имя: Дмитрий
Благодарил (а): 23 раза
Поблагодарили: 35 раз

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

Сообщение dstrufanov »

Сообщение удалено
Последний раз редактировалось dstrufanov 13 июн 2025, 22:59, всего редактировалось 1 раз.
Аватара пользователя
Phazz
Полковник
Сообщения: 3107
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 226 раз
Поблагодарили: 106 раз

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

Сообщение Phazz »

dstrufanov писал(а): 22 мар 2025, 09:41
Phazz писал(а): 21 мар 2025, 19:28 А как меняется расход памяти при увеличении количества блоков?
Попробовал:
flp_3and.png
asm_3and.png
Относительное увеличение ассемблерного кода выше, можно предположить, что при дальнейшем увеличении объема схемы его преимущества пропадут, а возможно код даже станет больше
Думаю, что надо писать библиотеки на асме и к ним обращаться, тогда ситуация в плане расхода памяти программ улучшится. Но еще больше вырастет расход ОЗУ на переменные :smile44:

ПС: Анатолий, спасибо за наводку! :smile37:
В C++ оптимизацию делает компилятор. В случае асм видимо это все нужно делать руками. Но зато мы имеем скорость взамен повышенному расходу ОЗУ.
Аватара пользователя
fefar51702
Сержант
Сообщения: 248
Зарегистрирован: 26 июн 2022, 07:35
Имя: Валера
Благодарил (а): 1 раз
Поблагодарили: 5 раз

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

Сообщение fefar51702 »

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

Вы их сейчас крутите теоретически с сотнями тысяч обращения проца к ним хотя они не меняются допустим

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

Поправьте если ошибаюсь
Аватара пользователя
fefar51702
Сержант
Сообщения: 248
Зарегистрирован: 26 июн 2022, 07:35
Имя: Валера
Благодарил (а): 1 раз
Поблагодарили: 5 раз

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

Сообщение fefar51702 »

И к стати я все-таки придумал как померить чистый цыкл кода вашего и узнать его скорость

В теории нужно поставить в начеле пин и в конце пин а между ними код и померить время между пинами этими лучше осцылографом с двумя щюпами либо анализатором но с большеватой погрешностью
Аватара пользователя
dstrufanov
Сержант
Сообщения: 195
Зарегистрирован: 07 янв 2024, 12:43
Имя: Дмитрий
Благодарил (а): 23 раза
Поблагодарили: 35 раз

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

Сообщение dstrufanov »

Сообщение удалено
Последний раз редактировалось dstrufanov 13 июн 2025, 22:59, всего редактировалось 1 раз.
Аватара пользователя
fefar51702
Сержант
Сообщения: 248
Зарегистрирован: 26 июн 2022, 07:35
Имя: Валера
Благодарил (а): 1 раз
Поблагодарили: 5 раз

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

Сообщение fefar51702 »

Phazz писал(а): 20 мар 2025, 15:58
fefar51702 писал(а): 20 мар 2025, 15:41 да и вообще подумываю создать блок который бы следил за утечкой оперативной памяти из за дырявого кода а там уже решать обход что вызвало её
Сделать такой блок не сложно совсем. А вот найти почему утекает, это задача посложнее
С поисками - это в принципе Понятно Надо думать Ну есть же решение мы можем же сами пробовать очищать память и всякие метки Чтобы избежать дефрагментации и утечек в поиске натыкался на несколько функций да надо использовать осторожно и в нужное местах и в нужный момент но в теории если расположить их в конце цикла и обращаться к ним раз в полсекунды для профилактики возможно ничего страшного не будет кроме полезного но надо побольше почитать непонятно почему тогда Сергей этот метод не использует
Аватара пользователя
Phazz
Полковник
Сообщения: 3107
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 226 раз
Поблагодарили: 106 раз

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

Сообщение Phazz »

Это все теория. Вы покажите рабочее решение. Тем более что в стандартных блоках ничего не утекает.
starmos
Сержант
Сообщения: 141
Зарегистрирован: 11 апр 2016, 15:46
Откуда: Челябинск

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

Сообщение starmos »

Единственный смысл пытаться писать на ассемблере - сделать программу меньше по объему. Но для этого нужно от и до знать систему команд конкретного микроконтроллера и уметь ей пользоваться. А иначе получится трудоемко, но без выигрыша в объеме кода (проигрыш будет, проверено). Это потому что компиляторы Си тоже не дураки пишут и они тоже хотели сделать итоговый код небольшим. И при написании компилятора использовали максимальное количество команд из ассемблерных команд контроллера. В то время как среднестатистический программист использует их штук 10-20 (это я ориентируюсь на систему команд 51-го семейства, с которым работал, когда последний раз на ассемблере пытался писать). Для интереса можно вывести ассемблерный листинг и посмотреть как компилятор преобразует операнды Си в ассемблерный код - очень интересно, зачастую не все способы очевидны. Когда-то давно (уж не менее четверти века назад) я на это посмотрел и с тех пор не пытаюсь писать на ассемблере и никому не советую. Зачем "велосипед" изобретать?
Кстати, "на заре" проводились соревнования программистов на написание самого компактного кода - единицы байт выигрывались. Для компьютеров чья память была размером в 640кБ, это имело смысл. А сейчас проще взять контроллер с нужным объемом памяти, а не тратить жизнь непонятно на что. Конечно мы стали глупее по сравнению с теми временами, уже никто сегодня не напишет изящный код, все сплошь мегабайты. Но даже если и вдруг, то кто это оценит? Главное ведь результат. А Си дает быстрый результат, при достаточно скромном объеме кода. А что нужно еще?
Аватара пользователя
dstrufanov
Сержант
Сообщения: 195
Зарегистрирован: 07 янв 2024, 12:43
Имя: Дмитрий
Благодарил (а): 23 раза
Поблагодарили: 35 раз

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

Сообщение dstrufanov »

Сообщение удалено
Последний раз редактировалось dstrufanov 13 июн 2025, 22:59, всего редактировалось 1 раз.
Аватара пользователя
kulibinsvv
Лейтенант
Сообщения: 486
Зарегистрирован: 18 сен 2015, 10:04
Откуда: Омск
Благодарил (а): 3 раза
Поблагодарили: 5 раз

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

Сообщение kulibinsvv »

Writing a Library for Arduino

На русском, ничего внятного, с требованиями к написанию библиотек не находил.

Лучшее на русском
Мой змей, этот ползучий соблазн сомнения,всё шевелится, побуждая «искать концы»... (Станислав Ермаков)
Аватара пользователя
dstrufanov
Сержант
Сообщения: 195
Зарегистрирован: 07 янв 2024, 12:43
Имя: Дмитрий
Благодарил (а): 23 раза
Поблагодарили: 35 раз

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

Сообщение dstrufanov »

Сообщение удалено
Последний раз редактировалось dstrufanov 13 июн 2025, 22:59, всего редактировалось 1 раз.
lfgjikjjyj
Сержант
Сообщения: 100
Зарегистрирован: 27 мар 2025, 12:13
Имя: Коля
Поблагодарили: 6 раз

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

Сообщение lfgjikjjyj »

По вашей задумке уже есть вариант только с библиотекой готовой ArduinoShrink
Которая предлагает частичные замены на асеблер судя по описанию
Эта библиотека заменяет функции Arduino AVR Core на более мелкие и быстрые версии с той же или лучшей функциональностью. Она разработана для микроконтроллеров ATmega168 и 328 на частотах от 4 до 16 МГц, хотя регулярно тестируются только 8 МГц и 16 МГц. Пример скетча Arduino Blink, созданный для Uno, занимает 924 байта флэш-памяти, но с ArduinoShrink требуется всего 196 байт.
При компиляции она делает подмену пинов милис микрос и прочего на ассемблер вставку
Думаю на простейших кодах это идеальный вариант
Если в коде будет что-то специфическое то возможно возникнут конфликты
Аватара пользователя
dstrufanov
Сержант
Сообщения: 195
Зарегистрирован: 07 янв 2024, 12:43
Имя: Дмитрий
Благодарил (а): 23 раза
Поблагодарили: 35 раз

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

Сообщение dstrufanov »

Сообщение удалено
Последний раз редактировалось dstrufanov 13 июн 2025, 23:00, всего редактировалось 1 раз.
Аватара пользователя
dstrufanov
Сержант
Сообщения: 195
Зарегистрирован: 07 янв 2024, 12:43
Имя: Дмитрий
Благодарил (а): 23 раза
Поблагодарили: 35 раз

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

Сообщение dstrufanov »

Сообщение удалено
Последний раз редактировалось dstrufanov 13 июн 2025, 23:00, всего редактировалось 2 раза.
Аватара пользователя
dstrufanov
Сержант
Сообщения: 195
Зарегистрирован: 07 янв 2024, 12:43
Имя: Дмитрий
Благодарил (а): 23 раза
Поблагодарили: 35 раз

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

Сообщение dstrufanov »

Сообщение удалено
Последний раз редактировалось dstrufanov 13 июн 2025, 23:20, всего редактировалось 1 раз.
Ответить

Вернуться в «Разработка пользовательских блоков»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя