int counter = 0;
void Foo(void) {
int current = 321;
static int voltage = 0;
//...
}
..... Переменная же voltage – статическая. Она получит значение 0 один раз перед началом исполнения программы. .....
ЕвгенийП, весь холивар ниасилил, сдулся где-то на половине.
Поэтому извините, если повторюсь или выдам что-то не в тему.
У меня небольшая поправка. Насколько я знаю, строго говоря, статическая переменная инициализируется не перед началом исполнения программы, а при первом входе в блок/функцию, где эта переменная объявлена. Т.е., непосредственно перед первым использованием этой переменной.
Я уже ничего на гитхаб не выкладываю. Незачем. у меня - всё работает как надо .. и свой wiring и RTOS и ИС "ДРАКОН" генерит Ардуино-код вполне сопоставимый с результатом Атмел-студии и Ардублок скоро будет иметь ту же самую возможность использования моих библиотек, а не от новичков сферического программирования. Думаю, к весне можно будет пересадить ребенка на свой "Ардублок" на базе ДРАКОН..
да, кстати .. надо будет выложить фото нашей Меги2560 со всеми 86-ю рабочими контактами .. помнится Пухлявый очень хотел посмотреть .. :)
Я уже ничего на гитхаб не выкладываю. Незачем. у меня - всё работает как надо
А вот эта фраза говорит совсем не в Вашу пользу и, лично у меня, вызывает отрицательные эмоции по отношению к Вам. Потому что на GitHub выкладывают именно то, что работает как надо. Непонятно, что проприетарщик вообще делает на этом форуме.
1. "не хватит стека". Аргументы простые: вызов функции с параметром, это а) подготовка параметра для укладки на стек - 1 команда с ПРЯМОЙ адресацией для загрузки регистра для байта, 2 команды для int и 4(ЧЕТЫРЕ) команды для long. Далее, имеем ЕЩЁ 1 команду для каждого байта для укладки параметра на стек. Итого для long имеем 8(восемь!) дополнительных команд.
И в чем конкретно я был "не прав" согласно цитированному тексту?
Там вполне четко указано что из 32 имеющихся байтовых регистров (16 слов или 8 дв. слов), пара регистров 0,1 - отдана под "текущие операции компилятора", регистры 18-31 отданы под оформление вызовов и передачи параметров .. из них исключаем (чего там не прописано) пары X(26,27),Y(28,29),Z(30,31) как указатели и особливо пару 30,31 как хранящую указатель this и он такой .. упс один на все "объекты" .. (вопрос его сохраннности промеж вызовов) .. да, ещё пара 24,25 и возможно 22,23 используется для возврата значения .. то бишь из этого набора реально для передачи параметров остается 18,19,20 и 21 .. 4 байта.
А пары 2..17,28,29 могут размещать локалы, но .. они обязательно требуют дополнительного кода сохранения/восстановления стека. И? что там остается для "локалов" функциональных апологетов? Да, ещё неплохо учесть наличие "внутренних локалов" для операций умножения даже целых чисел и прочих мест, где компилятор их создает помимо воли автора кода. :)
Да и ещё .. не знаю как последние версии gcc (вроде авторы обещались исправиться) но локальные структуры .. шли сразу в память, чего было не очень удобно.
Прежде чем писать что "кто-то неправ" сильно советую посмотреть на результаты компиляций в ассемблер .. хотя бы того же delay() .. вроде "проще некуда". :)
Я уже ничего на гитхаб не выкладываю. Незачем. у меня - всё работает как надо
А вот эта фраза говорит совсем не в Вашу пользу и, лично у меня, вызывает отрицательные эмоции по отношению к Вам. Потому что на GitHub выкладывают именно то, что работает как надо. Непонятно, что проприетарщик вообще делает на этом форуме.
Вам нравится какашки под кустиками собирать? Удачи! ))))))))))))
Нашли показатель... GitHub... сейчас умру от смеха! ))))))))))))))))))))))))))))))
Я - не являюсь "проприетарщиком" .. выкладывал. Теперь - не вижу надобности. Да и зачем оно вам? Оно же сплошь рассово-неверно, ибо на глобалах больше 50% кода, ибо большая часть обработок на прерываниях! И как вы будете адаптировать код к Ардуино, который юзает вовсю "wiring++", работающий на всех 86 ногах и БЕЗ их цифровой нумерации (то самое решение, которое тут от автора топика ждут уже с полгода, пожалуй)?
Прежде чем писать что "кто-то неправ" сильно советую посмотреть на результаты компиляций в ассемблер .. хотя бы того же delay() .. вроде "проще некуда". :)
У недоэмбэддэров от РС мозг развёрнут в другую сторону. Они в каждом МК видят крошечный РС, со всеми вытекающими.
Ну скомпиляйте вы уже в ассемблер что-нибудь и обнаружьте "где там стек" .. что вы читаете ужатые портянки без детального объяснения что, куда и как использует компилятор? Есть развернутые описания .. лень снова искать. Где-то на микросине було..
Да. И это тоже причина по котрой УЖЕ не выкладываю. Обнаружено и доказано, что проприетарщики шарятся по таким свалкам и патентуют код как свой собственный. Вы просто даже не догадываетесь сколько и каких ботов шарится по сети и "шерстят" такие вот форумы на предмет новых идей..
Мне лень сейчас заново ставить avr-gcc. ибо он уже давно переселился на комп к ребенку и показывать вам результаты ассемблерных листингов компиляций. Но, судя по вашим брождениям по ссылкам и скорости появления ваших "детализирующих постов" - да, почти уверен что НЕ смотрели ни разу.
Ещё раз: до тех пор, пока люди, взявшиеся обучать программированию микроконтроллеров будут втулять "рассовоправильные" догмы - надо чтобы хоть кто-то им препятствовал в распространении подходов говнокодинга.
Обнаружено и доказано, что проприетарщики шарятся по таким свалкам и патентуют код как свой собственный. Вы просто даже не догадываетесь сколько и каких ботов шарится по сети и "шерстят" такие вот форумы на предмет новых идей..
И это великолепно! Если размещать под GPLv2, то потом эти же проприетарщики, скрипя зубами и подвывая, выкладывают в общий доступ весь свой проприетарный код, перелицензируя его под GPL )
Ещё раз: до тех пор, пока люди, взявшиеся обучать программированию микроконтроллеров будут втулять "рассовоправильные" догмы - надо чтобы хоть кто-то им препятствовал в распространении подходов говнокодинга.
У меня нет ни желания ни времени разбираться с проприетарщиками и воровством в среде ИТ. Кому надо - тот взял и пользует. Сейчас вопросы распространения закрыты по причине того что занимаюсь другой стороной темы и есть идеи как это можно сделать "ишо лучше" .. но пока "не до этого". Какие-то куски в свое время отправлялись разработчикам Ардуино .. сочтут полезным - втыкнут в ИДЕ штатно и без меня.
Да. И это тоже причина по котрой УЖЕ не выкладываю. Обнаружено и доказано, что проприетарщики шарятся по таким свалкам и патентуют код как свой собственный. Вы просто даже не догадываетесь сколько и каких ботов шарится по сети и "шерстят" такие вот форумы на предмет новых идей..
Чушь! Идея первична, всё остальное вторично. Меня на форумах, например, и интересуют только идеи, а чужой код мне и нахрен не всрался. Но и свой я никогда не выкладывал, он практически весь коммерческий.
ваша попытка юродствовать "не канает". :) В данном конкретном случае, ваше "не рекомендую глобалы" и есть ГОВНОКОДИНГ. :)
Ибо методы управления экскаватором в корне отличаются от катания на самокате. Пока до вас этот простой факт не дойдет - ваша рекомендация - есть подталкивание к говнокодингу. И только.
Ещё раз: до тех пор, пока люди, взявшиеся обучать программированию микроконтроллеров будут втулять "рассовоправильные" догмы - надо чтобы хоть кто-то им препятствовал в распространении подходов говнокодинга.
Подход ардуины сплошной говнокодинг. Ну и как вы с этим боретесь? Или ваш говнокодинг говнокодистее?
Ибо методы управления экскаватором в корне отличаются от катания на самокате.
Методы, да. Но ПДД едины и для самоката, и для экскаватора. В целях безопасности. Точно так же как и правила написания безошибочного кода едины и служат целям безопасности.
Почему же? Вы по полной облажались, утверждая, что передача параметров, вместо использования глобалов, будет расходовать стек. Итого, у Вас не нашлось ни одного аргумента, почему надо поощрять использование глобальных переменных у новичков. Я же предоставил множество таких аргументов. Умейте признавать свои ошибки.
Методы, да. Но ПДД едины и для самоката, и для экскаватора. В целях безопасности. Точно так же как и правила написания безошибочного кода едины и служат целям безопасности.
Бред! Вы хоть правила безопасности кода читали, хоть раз? Ардуина там и рядом не валялась! Ибо это не её и это ей и нахрен не нужно. У неё совсем другие задачи, - дать первый успех для новичка, и только.
Бред! Вы хоть правила безопасности кода читали, хоть раз? Ардуина там и рядом не валялась! Ибо это не её и это ей и нахрен не нужно. У неё совсем другие задачи, - дать первый успех для новичка, и только.
Мда, походу ЕвгенийП все же был прав...
Безопасность кода - это использование ресурсов компилятора, а не ресурсов CPU во время выполнения программы.
У меня небольшая поправка. Насколько я знаю, строго говоря, статическая переменная инициализируется не перед началом исполнения программы, а при первом входе в блок/функцию, где эта переменная объявлена. Т.е., непосредственно перед первым использованием этой переменной.
Давйте проверим.
Для начала запустим вот такой скетч с целью узнать адрес локальной статической переменной.
template <typename T> inline Print & operator << (Print &s, T n) { s.print(n); return s; }
long * f(void) {
static long lv = 123454321;
return & lv;
}
void setup(void) {
Serial.begin(115200);
long * p = f();
Serial << "p=" << (long)(p) << "; *p=" << (*p) << '\n';
}
void loop(void) {
digitalWrite(3, (int)f()); // пусть будет
}
Результат:
p=256; *p=123454321
Теперь, когда мы знаем адрес, перепишем скетч вот в таком виде (изменена только строка 10!):
template <typename T> inline Print & operator << (Print &s, T n) { s.print(n); return s; }
long * f(void) {
static long lv = 123454321;
return & lv;
}
void setup(void) {
Serial.begin(115200);
long * p = (long *) 256;
Serial << "p=" << (long)(p) << "; *p=" << (*p) << '\n';
}
void loop(void) {
digitalWrite(3, (int)f()); // это нужно, что f() не была выброшена при оптимизации
}
Результат
p=256; *p=123454321
Как видите, локальная статическая переменная была инициализирована и ДО вызова функции.
Я уже ничего на гитхаб не выкладываю. Незачем. у меня - всё работает как надо .. и свой wiring и RTOS и ИС "ДРАКОН" генерит Ардуино-код вполне сопоставимый с результатом Атмел-студии и Ардублок скоро будет иметь ту же самую возможность использования моих библиотек, а не от новичков сферического программирования. Думаю, к весне можно будет пересадить ребенка на свой "Ардублок" на базе ДРАКОН..
да, кстати .. надо будет выложить фото нашей Меги2560 со всеми 86-ю рабочими контактами .. помнится Пухлявый очень хотел посмотреть .. :)
сферический ребенок загружает сферическую библиотеку в сферический "Ардублок", на базе сферического ДРАКОНА
ptr, Вы ошибаетесь. ПДД существуют для экскаватора и отсутствуют для самокатов. Ибо им появляться на большой дороге - ЗАПРЕЩЕНО от слова "совсем". Также и с микроконтроллерами .. ну не канают методы управления экскаватором тут! Доходите .. медленно, постепенно .. "рассовоправильный догматизм" проходит. :)
Почему же? Вы по полной облажались, утверждая, что передача параметров, вместо использования глобалов, будет расходовать стек. Итого, у Вас не нашлось ни одного аргумента, почему надо поощрять использование глобальных переменных у новичков. Я же предоставил множество таких аргументов. Умейте признавать свои ошибки.
И долго вы будете нести подобную чушь? Впомнилось выступление "гуру" по поводу статик на котах. В итоге - новичок натыкал их где попало, вместо уменьшения размера кода получил увеличение и по этому поводу потом долго ржали на двух форумах.
Где что лучше приходит только с опытом. А ваши общие понятия ни о чём. Никогда не видели, как сранный ЖЦЦ делает кодэ реордэринг с локальными переменными? Не?
Бред! Вы хоть правила безопасности кода читали, хоть раз? Ардуина там и рядом не валялась! Ибо это не её и это ей и нахрен не нужно. У неё совсем другие задачи, - дать первый успех для новичка, и только.
Мда, походу ЕвгенийП все же был прав...
Безопасность кода - это использование ресурсов компилятора, а не ресурсов CPU во время выполнения программы.
Бред! Это и знание компилятора, и ресурсов CPU, и многое ещё чего. Многие ли новички, да и не только, опускаются до таких "мелочей"?
ptr, писал: "Почему же? Вы по полной облажались, утверждая, что передача параметров, вместо использования глобалов, будет расходовать стек."
Не передергивайте. Я не писал что "вместо" .. будет пытаться использовать регистры для передачи параметров, но и только. Среднее количество параметров заведомо превышает возможности попыток компилятора и даже в казалось бы простых ситуациях .. параметры таки лезут на стек. Часто как раз из-за call-saved registers по вашей ссылке.
Затраты на вызов функции с параметрами я вам прикинул. Они в среднем ТАКИЕ. И это хорошо было показано тут где-то Евгением с его попытками моргать блинком разными способами. Скорострельность дуньки при вызовах даже простой функции резко падала на ПОРЯДОК .. об этом и был мой текст. Перечитайте.
Можете взять тот самый пример из этого топика, на который ссылался Евгений в начале темы .. и объяснения своим опусам ТАК И НЕ ПРИВЕЛ .. слился. Там есть ссылка на код. он есть в параметрах и глобалах .. как раз вам "для сравнений". :)
Конечно в ПДД! Но как раз в МОЕЙ ЧАСТИ ПДД: "нельзя лезть с рассовоправильными подходами в программирование микроконтроллеров" .. это и есть тот самый запрет, а вовсе не ваше "не используйте глобалы" .. :)
Ну так мы тут за кого речь ведем?!? "Этюды для НАЧИНАЮЩИХ" .. что вы все это одеяло на себя примерять пробуете? .. конечно, нормальный прогер с опытом способен оценить ожидаемый код функции и набор её параметров и организовать верную передачу ЗАРАНЕЕ, до написания кода .. но тогда и речи ни о чем нет .. тут "э-т-ю-д-ы..". И пока только за "сферическое ПДД в вакууме", ибо к самокатам - оно НЕ ПОДХОДИТ. :)
Если у чела не хватает терпежу прочитать каких-то 150-200 постов по теме .. оно ему точно "надо"? Собственно как и всю тему давно надо снести в соответствующий раздел за отсутсвием пользы и наличием явного вреда.
Пример:
..... Переменная же voltage – статическая. Она получит значение 0 один раз перед началом исполнения программы. .....
ЕвгенийП, весь холивар ниасилил, сдулся где-то на половине.
Поэтому извините, если повторюсь или выдам что-то не в тему.
У меня небольшая поправка. Насколько я знаю, строго говоря, статическая переменная инициализируется не перед началом исполнения программы, а при первом входе в блок/функцию, где эта переменная объявлена. Т.е., непосредственно перед первым использованием этой переменной.
один набор иерархии Serial чего стоит
Почему же Вы за год на форуме до сих не переписали его в оптимальном виде и выложили на GitHub?
..... Переменная же voltage – статическая. Она получит значение 0 один раз перед началом исполнения программы. .....
статическая переменная инициализируется не перед началом исполнения программы, а при первом входе в блок/функцию, где эта переменная объявлена
Нет. На то она и статическая, что инициализирована еще в объектном файле до загрузки в МК
Я уже ничего на гитхаб не выкладываю. Незачем. у меня - всё работает как надо .. и свой wiring и RTOS и ИС "ДРАКОН" генерит Ардуино-код вполне сопоставимый с результатом Атмел-студии и Ардублок скоро будет иметь ту же самую возможность использования моих библиотек, а не от новичков сферического программирования. Думаю, к весне можно будет пересадить ребенка на свой "Ардублок" на базе ДРАКОН..
да, кстати .. надо будет выложить фото нашей Меги2560 со всеми 86-ю рабочими контактами .. помнится Пухлявый очень хотел посмотреть .. :)
Я уже ничего на гитхаб не выкладываю. Незачем. у меня - всё работает как надо
А вот эта фраза говорит совсем не в Вашу пользу и, лично у меня, вызывает отрицательные эмоции по отношению к Вам. Потому что на GitHub выкладывают именно то, что работает как надо. Непонятно, что проприетарщик вообще делает на этом форуме.
1. "не хватит стека". Аргументы простые: вызов функции с параметром, это а) подготовка параметра для укладки на стек - 1 команда с ПРЯМОЙ адресацией для загрузки регистра для байта, 2 команды для int и 4(ЧЕТЫРЕ) команды для long. Далее, имеем ЕЩЁ 1 команду для каждого байта для укладки параметра на стек. Итого для long имеем 8(восемь!) дополнительных команд.
Для, тех, кто хочет понять, в чем автор цитируемого текста совершенно не прав: http://www.atmel.com/webdoc/AVRLibcReferenceManual/FAQ_1faq_reg_usage.html
И в чем конкретно я был "не прав" согласно цитированному тексту?
Там вполне четко указано что из 32 имеющихся байтовых регистров (16 слов или 8 дв. слов), пара регистров 0,1 - отдана под "текущие операции компилятора", регистры 18-31 отданы под оформление вызовов и передачи параметров .. из них исключаем (чего там не прописано) пары X(26,27),Y(28,29),Z(30,31) как указатели и особливо пару 30,31 как хранящую указатель this и он такой .. упс один на все "объекты" .. (вопрос его сохраннности промеж вызовов) .. да, ещё пара 24,25 и возможно 22,23 используется для возврата значения .. то бишь из этого набора реально для передачи параметров остается 18,19,20 и 21 .. 4 байта.
А пары 2..17,28,29 могут размещать локалы, но .. они обязательно требуют дополнительного кода сохранения/восстановления стека. И? что там остается для "локалов" функциональных апологетов? Да, ещё неплохо учесть наличие "внутренних локалов" для операций умножения даже целых чисел и прочих мест, где компилятор их создает помимо воли автора кода. :)
Да и ещё .. не знаю как последние версии gcc (вроде авторы обещались исправиться) но локальные структуры .. шли сразу в память, чего было не очень удобно.
Прежде чем писать что "кто-то неправ" сильно советую посмотреть на результаты компиляций в ассемблер .. хотя бы того же delay() .. вроде "проще некуда". :)
Я уже ничего на гитхаб не выкладываю. Незачем. у меня - всё работает как надо
А вот эта фраза говорит совсем не в Вашу пользу и, лично у меня, вызывает отрицательные эмоции по отношению к Вам. Потому что на GitHub выкладывают именно то, что работает как надо. Непонятно, что проприетарщик вообще делает на этом форуме.
Вам нравится какашки под кустиками собирать? Удачи! ))))))))))))
Нашли показатель... GitHub... сейчас умру от смеха! ))))))))))))))))))))))))))))))
Я - не являюсь "проприетарщиком" .. выкладывал. Теперь - не вижу надобности. Да и зачем оно вам? Оно же сплошь рассово-неверно, ибо на глобалах больше 50% кода, ибо большая часть обработок на прерываниях! И как вы будете адаптировать код к Ардуино, который юзает вовсю "wiring++", работающий на всех 86 ногах и БЕЗ их цифровой нумерации (то самое решение, которое тут от автора топика ждут уже с полгода, пожалуй)?
Прежде чем писать что "кто-то неправ" сильно советую посмотреть на результаты компиляций в ассемблер .. хотя бы того же delay() .. вроде "проще некуда". :)
У недоэмбэддэров от РС мозг развёрнут в другую сторону. Они в каждом МК видят крошечный РС, со всеми вытекающими.
И в чем конкретно я был "не прав" согласно цитированному тексту?
...
1. "не хватит стека".
...
регистры 18-31 отданы под оформление вызовов и передачи параметров
И где тут стек?
Ну скомпиляйте вы уже в ассемблер что-нибудь и обнаружьте "где там стек" .. что вы читаете ужатые портянки без детального объяснения что, куда и как использует компилятор? Есть развернутые описания .. лень снова искать. Где-то на микросине було..
Нашли показатель... GitHub... сейчас умру от смеха! ))))))))))))))))))))))))))))))
Еще одни проприетарщик. Брысь с форума )
Да. И это тоже причина по котрой УЖЕ не выкладываю. Обнаружено и доказано, что проприетарщики шарятся по таким свалкам и патентуют код как свой собственный. Вы просто даже не догадываетесь сколько и каких ботов шарится по сети и "шерстят" такие вот форумы на предмет новых идей..
Ну скомпиляйте вы уже в ассемблер что-нибудь
Вы что, действительно думаете, что я не изучал ассемблерный код, формируемый GCC на AVR?
Сами сделайте и посмотрите. Если суммарный размер параметров меньше 24 байт, то они все будут переданы через регистры, без всякого стека.
Мне лень сейчас заново ставить avr-gcc. ибо он уже давно переселился на комп к ребенку и показывать вам результаты ассемблерных листингов компиляций. Но, судя по вашим брождениям по ссылкам и скорости появления ваших "детализирующих постов" - да, почти уверен что НЕ смотрели ни разу.
Ещё раз: до тех пор, пока люди, взявшиеся обучать программированию микроконтроллеров будут втулять "рассовоправильные" догмы - надо чтобы хоть кто-то им препятствовал в распространении подходов говнокодинга.
Обнаружено и доказано, что проприетарщики шарятся по таким свалкам и патентуют код как свой собственный. Вы просто даже не догадываетесь сколько и каких ботов шарится по сети и "шерстят" такие вот форумы на предмет новых идей..
И это великолепно! Если размещать под GPLv2, то потом эти же проприетарщики, скрипя зубами и подвывая, выкладывают в общий доступ весь свой проприетарный код, перелицензируя его под GPL )
Ещё раз: до тех пор, пока люди, взявшиеся обучать программированию микроконтроллеров будут втулять "рассовоправильные" догмы - надо чтобы хоть кто-то им препятствовал в распространении подходов говнокодинга.
Самокритично! Поздравляю )
У меня нет ни желания ни времени разбираться с проприетарщиками и воровством в среде ИТ. Кому надо - тот взял и пользует. Сейчас вопросы распространения закрыты по причине того что занимаюсь другой стороной темы и есть идеи как это можно сделать "ишо лучше" .. но пока "не до этого". Какие-то куски в свое время отправлялись разработчикам Ардуино .. сочтут полезным - втыкнут в ИДЕ штатно и без меня.
Да. И это тоже причина по котрой УЖЕ не выкладываю. Обнаружено и доказано, что проприетарщики шарятся по таким свалкам и патентуют код как свой собственный. Вы просто даже не догадываетесь сколько и каких ботов шарится по сети и "шерстят" такие вот форумы на предмет новых идей..
Чушь! Идея первична, всё остальное вторично. Меня на форумах, например, и интересуют только идеи, а чужой код мне и нахрен не всрался. Но и свой я никогда не выкладывал, он практически весь коммерческий.
ваша попытка юродствовать "не канает". :) В данном конкретном случае, ваше "не рекомендую глобалы" и есть ГОВНОКОДИНГ. :)
Ибо методы управления экскаватором в корне отличаются от катания на самокате. Пока до вас этот простой факт не дойдет - ваша рекомендация - есть подталкивание к говнокодингу. И только.
Ещё раз: до тех пор, пока люди, взявшиеся обучать программированию микроконтроллеров будут втулять "рассовоправильные" догмы - надо чтобы хоть кто-то им препятствовал в распространении подходов говнокодинга.
Подход ардуины сплошной говнокодинг. Ну и как вы с этим боретесь? Или ваш говнокодинг говнокодистее?
Про говнокод и глобальные переменные. Очень популярно и подробно: http://c2.com/cgi/wiki?GlobalVariablesAreBad
Ибо методы управления экскаватором в корне отличаются от катания на самокате.
Методы, да. Но ПДД едины и для самоката, и для экскаватора. В целях безопасности. Точно так же как и правила написания безошибочного кода едины и служат целям безопасности.
Про говнокод и глобальные переменные.
Да чушь собачья! Что хуже, что лучше может разобраться только профи, да и то в каждом, в каждом!, конкретном случае. А в общем и целом - это ни о чём.
ваша попытка юродствовать "не канает". :)
Почему же? Вы по полной облажались, утверждая, что передача параметров, вместо использования глобалов, будет расходовать стек. Итого, у Вас не нашлось ни одного аргумента, почему надо поощрять использование глобальных переменных у новичков. Я же предоставил множество таких аргументов. Умейте признавать свои ошибки.
Методы, да. Но ПДД едины и для самоката, и для экскаватора. В целях безопасности. Точно так же как и правила написания безошибочного кода едины и служат целям безопасности.
Бред! Вы хоть правила безопасности кода читали, хоть раз? Ардуина там и рядом не валялась! Ибо это не её и это ей и нахрен не нужно. У неё совсем другие задачи, - дать первый успех для новичка, и только.
Да чушь собачья!
Детка, извинись и больше не преходи на личности. Или прослывешь флеймером и демагогом.
Или прослывешь флеймером и демагогом.
Да пофигу! Лишь бы не таким ламером как ты!
Бред! Вы хоть правила безопасности кода читали, хоть раз? Ардуина там и рядом не валялась! Ибо это не её и это ей и нахрен не нужно. У неё совсем другие задачи, - дать первый успех для новичка, и только.
Мда, походу ЕвгенийП все же был прав...
Безопасность кода - это использование ресурсов компилятора, а не ресурсов CPU во время выполнения программы.
Да пофигу! Лишь бы не таким ламером как ты!
Детка, хамло ты позорное и этим доказывешь, что ты ламер и есть )
У меня небольшая поправка. Насколько я знаю, строго говоря, статическая переменная инициализируется не перед началом исполнения программы, а при первом входе в блок/функцию, где эта переменная объявлена. Т.е., непосредственно перед первым использованием этой переменной.
Давйте проверим.
Для начала запустим вот такой скетч с целью узнать адрес локальной статической переменной.
Результат:
p=256; *p=123454321
Теперь, когда мы знаем адрес, перепишем скетч вот в таком виде (изменена только строка 10!):
Результат
p=256; *p=123454321
Как видите, локальная статическая переменная была инициализирована и ДО вызова функции.
Я уже ничего на гитхаб не выкладываю. Незачем. у меня - всё работает как надо .. и свой wiring и RTOS и ИС "ДРАКОН" генерит Ардуино-код вполне сопоставимый с результатом Атмел-студии и Ардублок скоро будет иметь ту же самую возможность использования моих библиотек, а не от новичков сферического программирования. Думаю, к весне можно будет пересадить ребенка на свой "Ардублок" на базе ДРАКОН..
да, кстати .. надо будет выложить фото нашей Меги2560 со всеми 86-ю рабочими контактами .. помнится Пухлявый очень хотел посмотреть .. :)
сферический ребенок загружает сферическую библиотеку в сферический "Ардублок", на базе сферического ДРАКОНА
ptr, Вы ошибаетесь. ПДД существуют для экскаватора и отсутствуют для самокатов. Ибо им появляться на большой дороге - ЗАПРЕЩЕНО от слова "совсем". Также и с микроконтроллерами .. ну не канают методы управления экскаватором тут! Доходите .. медленно, постепенно .. "рассовоправильный догматизм" проходит. :)
Почему же? Вы по полной облажались, утверждая, что передача параметров, вместо использования глобалов, будет расходовать стек. Итого, у Вас не нашлось ни одного аргумента, почему надо поощрять использование глобальных переменных у новичков. Я же предоставил множество таких аргументов. Умейте признавать свои ошибки.
И долго вы будете нести подобную чушь? Впомнилось выступление "гуру" по поводу статик на котах. В итоге - новичок натыкал их где попало, вместо уменьшения размера кода получил увеличение и по этому поводу потом долго ржали на двух форумах.
Где что лучше приходит только с опытом. А ваши общие понятия ни о чём. Никогда не видели, как сранный ЖЦЦ делает кодэ реордэринг с локальными переменными? Не?
Бред! Вы хоть правила безопасности кода читали, хоть раз? Ардуина там и рядом не валялась! Ибо это не её и это ей и нахрен не нужно. У неё совсем другие задачи, - дать первый успех для новичка, и только.
Мда, походу ЕвгенийП все же был прав...
Безопасность кода - это использование ресурсов компилятора, а не ресурсов CPU во время выполнения программы.
Бред! Это и знание компилятора, и ресурсов CPU, и многое ещё чего. Многие ли новички, да и не только, опускаются до таких "мелочей"?
ptr, писал: "Почему же? Вы по полной облажались, утверждая, что передача параметров, вместо использования глобалов, будет расходовать стек."
Не передергивайте. Я не писал что "вместо" .. будет пытаться использовать регистры для передачи параметров, но и только. Среднее количество параметров заведомо превышает возможности попыток компилятора и даже в казалось бы простых ситуациях .. параметры таки лезут на стек. Часто как раз из-за call-saved registers по вашей ссылке.
Затраты на вызов функции с параметрами я вам прикинул. Они в среднем ТАКИЕ. И это хорошо было показано тут где-то Евгением с его попытками моргать блинком разными способами. Скорострельность дуньки при вызовах даже простой функции резко падала на ПОРЯДОК .. об этом и был мой текст. Перечитайте.
Можете взять тот самый пример из этого топика, на который ссылался Евгений в начале темы .. и объяснения своим опусам ТАК И НЕ ПРИВЕЛ .. слился. Там есть ссылка на код. он есть в параметрах и глобалах .. как раз вам "для сравнений". :)
ptr, Вы ошибаетесь. ПДД существуют для экскаватора и отсутствуют для самокатов. Ибо им появляться на большой дороге - ЗАПРЕЩЕНО от слова "совсем".
Прошу прощения, а где запрещено? Не в ПДД случайно? )
Почему же? Вы по полной облажались
И долго вы будете нести подобную чушь?
Буду считать это признанием полного поражения. Так как вместо хоть каких-то аргументов пошла демагогия с переходом на личности )
Конечно в ПДД! Но как раз в МОЕЙ ЧАСТИ ПДД: "нельзя лезть с рассовоправильными подходами в программирование микроконтроллеров" .. это и есть тот самый запрет, а вовсе не ваше "не используйте глобалы" .. :)
Среднее количество параметров заведомо превышает возможности попыток компилятора
В говнокоде - да. В нормальном коде - 1-3, обычно. Я так уже при добавлении четвертого задумываюсь о переходе к указателю на структуру.
Затраты на вызов функции с параметрами я вам прикинул.
Для говнокода, когда не умеют работать с указателями на структуру.
Мужики, может вы отделльныю тему создадите?
А то вот Datak сделал замечание по теме, я ему ответил, но боюсь, что за вашим срачем он этого ответа не заметит!
Почему же? Вы по полной облажались
И долго вы будете нести подобную чушь?
Буду считать это признанием полного поражения.
Вашего поражения! Засчитано! ))))))))))))
Ну так мы тут за кого речь ведем?!? "Этюды для НАЧИНАЮЩИХ" .. что вы все это одеяло на себя примерять пробуете? .. конечно, нормальный прогер с опытом способен оценить ожидаемый код функции и набор её параметров и организовать верную передачу ЗАРАНЕЕ, до написания кода .. но тогда и речи ни о чем нет .. тут "э-т-ю-д-ы..". И пока только за "сферическое ПДД в вакууме", ибо к самокатам - оно НЕ ПОДХОДИТ. :)
Если у чела не хватает терпежу прочитать каких-то 150-200 постов по теме .. оно ему точно "надо"? Собственно как и всю тему давно надо снести в соответствующий раздел за отсутсвием пользы и наличием явного вреда.
Конечно в ПДД!
И опять облажались, так как до этого писали:
ПДД ... отсутствуют для самокатов
Более того, ПДД приравнивает самокаты к пешеходам и требует от них соблюдения ПДД:
http://letskick.ru/samokat-i-pdd/
Да пофиг. Важно что ПДД пешеходов и самокатчиков за экскаваторы не принимает .. :)
Мужики, может вы отделльныю тему создадите?
Ушел. И Arhat109-2 и ssss уже свалились в откровенную демагогию, а значит признали свою полную некомпетентность в обсуждаемом вопросе. ЧТД.
Да, тоже предлагаю уйти в силу вашей полной некомпетентности и незнания AVR архитектуры.
какое-то невъебенное бурление говн умудряется ТС в своих темах зарождать - сцуко, талант не пропьёшь.