Ока в Новосибирске

Клуб Окаводов Новосибирска
Текущее время: 10 апр 2020, 02:53

Часовой пояс: UTC + 7 часов




Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу Пред.  1, 2
Автор Сообщение
СообщениеДобавлено: 29 янв 2020, 17:46 
Не в сети
Уже был(а) и не раз

Зарегистрирован: 18 мар 2016, 16:52
Сообщения: 49
Авто: NISSAN
Имя: Олег
oka275 писал(а):
Не совсем понял. Эти 6 байт есть непосредственная подготовка к вызову функции? Или сама функция занимает 6 байт вместо одного, как в макросе?
А вот теперь из области того, чего я пока не могу понять вообще: Если эти 6 байт сидят в самой функции, а непосредственный её вызов "ничего не стоит", то проигрыш в экономии места во флеши будет только, если этих вызывов будет менее шести. А дальше типа уже должна начинаться экономия (пусть в ущерб быстродействию, напряганию стека и тд). Нам на уроках информатики говорили, что если в коде несколько раз встречаются одинаковые фрагменты, то это серьезный повод для того, чтобы создать функцию с ним и вызывать её нужное количество раз. Мол, это ведет к сокращению и оптимизации программы. В Ваших трудах я пока что вижу обратное, без всяких вариантов. А если таких вызывов в программе будет 100, 200? Двести байт макросов против 6 байт функции. Что я неправильно понимаю?


Я писал, что сама функция занимает несколько больше 6 байт, посчитал по листингу - 50 байт. Но она сидит во флеши один раз. Это второй листинг в предидущем посте (void _PORTB (char pin, bool bit)). А 6 байт (первый листинг) - это 100, 200 вызовов функции void _PORTB (char pin, bool bit). Давайте посчитаем разницу. Ваших 200 вызовов умножаем на 6 байт плюс 50 байт тела функции равно 1250 байт. У меня: 200 вызовов умножаем на 2 байта равно 400 . Разница 1250 делим на 400 равно в 3.125 раза
Причем 50 байт тела функции , заметьте это тольки OUT порта PB . А у нас еще PA, PC, PD и т.д. А еще нужно и входа считывать.
И на это еще уйдет, на каждую функцию, еще по 50 байт приблизительно. А у меня нет даже этих 50 байт. У меня на каждую функцию работы с портом уходит всего 2 байта(это и подготовка и тело функции). Если непоняли мой ход мысли пишите.
Может что и упустил, извините. Просто когда писал, торопился. Правильное решение находся в обсуждении и дискусии. Но не в СПОРЕ.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 янв 2020, 18:24 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 10 апр 2007, 22:36
Сообщения: 11018
Откуда: Новосибирск, Дзержинский
Авто: ВАЗ-21043
Имя: Алексей
olegzom писал(а):
Разница 1250 делим на 400 равно в 3.125 раза

Да, убедительно! И впечатлительно. Видимо придётся мне всё прошивку ЗУ перелопачивать. И глядишь - освободится еще один приличный кусок места, которого хватит на завершение проекта в рамках данного МК. Там я старался использовать функции по максимуму. Например, вызов функции beep() (простой щелчок-отклик на действия пользователя) у меня происходит действительно раз 100, если не больше. А там включение порта, пауза 50мсек и выключение. То есть тоже самое управление портом, только с delay. Если прикинуть накладные расходы, то это полный "асисяй". Попробую сегодня, если будет время, позаменить все эти beep() на макросы и погляжу сколько освободится памяти. В прочем, в моем случае этой функции ничего не передаётся в качестве аргумента, а потому предполагаю, что накладных расходов будет не так много. Но все равно попробую.

olegzom писал(а):
Правильное решение находся в обсуждении и дискусии. Но не в СПОРЕ.

Правильно. Так никто вроде не спорил? )) Во всяком случае я точно нет. Просто хотел разобраться в вопросе и я нашел достаточно аргументов, чтобы согласиться с доводами. Если бы их было недостаточно, то я просто бы тихо остался при своём мнении и всё. :-[ :)

_________________

Поблагодарить автора:
WEBMONEY: RUB R204514067624, USD Z884176036927
YANDEX 410011774412275
Сбербанк - по номеру мобильного (Алексей Викторович Ш.)
Альфа-банк - 08(собака)ngs.ru
Контакты:
whatsapp, telegramm, Мобильный - ссылка на свойства профиля
Skype: oka275 (в англ.раскладке)
Вконтакте
Одноквассники
Instagram


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 янв 2020, 19:07 
Не в сети
Уже был(а) и не раз

Зарегистрирован: 18 мар 2016, 16:52
Сообщения: 49
Авто: NISSAN
Имя: Олег
Да я и неговорю что кто-то спорит. Все нормально. Это я так сказал в общем. А то подумаете что "ворвался" тут и жить-програмировать учит. Ни в коем случае. Я просто хотел помочь от всего сердца и поделится своим опытом и наработками. Я не программист. Ну можно сказать любитель-программист.
Алексей, тот же Codevision тоже генерит асмовский файлик. И там тоже можно анализировать некоторые алгоритмы по занимаемому месту, и по эргономичности, посмотрите. Темболее что Вы немного знакомы с асемблером. Кстати, я тоже начинал учить програмить с ZX-Spectrum. А что касаемо знания команд асемлера AVR, так их и ненужно знать идеально. Для анализа главные команды "ветвления", тоесть которые изменяют последовательность выполнения, такие, например, как rjmp, rcall и им подобных. Это безусловный переход. Правда есть и команды услоного перехода. Ну это мой подход. Может кто подскажет другой. Вобщем нужно все пробовать на деле.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 янв 2020, 19:45 
Не в сети
Уже был(а), и не раз, и не два

Зарегистрирован: 23 ноя 2014, 16:40
Сообщения: 113
Откуда: Приморский край, г.Находка
Авто: Land Cruser Prado
Имя: Павел
Цитата:
В любом случае необходимо экспериментировать на примере конкретной здачи, единой рекомендации тут быть не может :)

Вот это точно. Я вообще такой человек, люблю когда все было по порядку, параллельно и перпендирулярно... Поэтому при написании отдельных участков программы, пробую разными способами реализовать эти участки. И какой способ наиболее практичный, тот и оставляю. И так по кусочкам программа и получается. Конечно больше времени на это уходит.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 7 часов


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB