Это же ваше???ArtDen писал(а): И как это относится к вопросу библиотеки C++ для работы с портами AVR?!
Недавно столкнулся с C++ - библиотекой для работы с портами ввода/вывода на STM32. Очень удобная штука.
Это же ваше???ArtDen писал(а): И как это относится к вопросу библиотеки C++ для работы с портами AVR?!
Недавно столкнулся с C++ - библиотекой для работы с портами ввода/вывода на STM32. Очень удобная штука.
Ну, знаете ли, по ошибке можно и Off вместо On написать.То, что можно по ошибке написать
В частности, чтобы понимать, почему C++ под такие мелкие системы неприменим.И можно всё-таки пояснить зачем нужно знать ассемблер, чтобы программировать на МК?
Можно чем-нибудь подтвердить эту мысль?YS писал(а):В частности, чтобы понимать, почему C++ под такие мелкие системы неприменим.![]()
Я ведь уже приводил дизассемблированный код для ООП-варианта и чистого Си. Видно, что в ООП-варианте для каждой строки генерируется отдельный блок одинакового кода. Зачем? Это бесполезная трата памяти и времени. И это в самом простом проекте, проще которого не бывает.Можно чем-нибудь подтвердить эту мысль?
Код не аналогичный.YS писал(а):Я ведь уже приводил дизассемблированный код для ООП-варианта и чистого Си)
Код: Выделить всё
typedef Pins<'B', 0x1 | 0x2> LED1AND2Pins;
....
LED1AND2Pins::ConfOut();
for (;;)
{
LED1AND2Pins::Cpl();
_delay_ms(500); // Делаем задержку
}
Мне за Вас погуглить сравнение эффективности Wiring (упрощенный C++ для AVR) и pure C?подтверждения ненужности C++ для МК так и не получил
Уверены?|Ассемблерный код тогда станет полностью аналогичный с Pure-C
А разве разговор идёт о Wiring?YS писал(а):Мне за Вас погуглить сравнение эффективности Wiring (упрощенный C++ для AVR) и pure C?![]()
Конечно.YS писал(а):Уверены?|Ассемблерный код тогда станет полностью аналогичный с Pure-C
Я ведь даже в скобках на всякий случай указал, что такое Wiring.А разве разговор идёт о Wiring?
Не вижу логической связи между утверждениями "Wiring генерирует тормозной код" и "Компилятор C++ генерирует тормозной код"YS писал(а):Я ведь даже в скобках на всякий случай указал, что такое Wiring.Кстати компилятор там - тот же GCC, так что сравнение корректно.
Не совсем понялYS писал(а):Только не говорите, что использующий плюсовые фичи остановится на их применении к портам.
Тоже не понял. Код (бинарный) выполняется процессором. Если имелся ввиду исходный код, то он не выполняется ни оптимизатором, не препроцессоромYS писал(а):Смысл дефайнов в том, что абсолютное большинство кода, ими описанного, должно выполниться препроцессором либо оптимизатором и не войти в результирующий бинарник. А вот ООП-фишки такого преимущества лишены.
Да, не смогли раскрыть тему архинужности С++ полностью... бывает...ArtDen писал(а): В общем, никто так и не понял в чём профит такого подхода![]()
А нужно??? Кому и зачем???PS: подтверждения ненужности C++ для МК так и не получил![]()
ArtDen писал(а): Не совсем понял
Название темы... хоть помните???Тоже не понял.
Эта же тема про библиотеку для работы с портами ввода/вывода для AVR на C++.
Код: Выделить всё
Loop:
sbi PINx,LED
rjmp LOOPWiring ничего не генерирует.Не вижу логической связи между утверждениями "Wiring генерирует тормозной код" и "Компилятор C++ генерирует тормозной код"
Я имел в виду, что скорее всего, парадигма ООП будет распространена на всю программу. : )Не совсем понял
Тогда я Вас очень удивлю. Если Вы напишетеТоже не понял. Код (бинарный) выполняется процессором. Если имелся ввиду исходный код, то он не выполняется ни оптимизатором, не препроцессором
Код: Выделить всё
a=((2+3)+4*8) | (1<<2);
Код: Выделить всё
a=37;
В какой именно я "не в теме": C/C++, работа с портами ввода/вывода или программирование для МК?HHIMERA писал(а):2ArtDen
Если вы совсем не в теме, то и не стоит так нервничать...
Ещё раз повторяю. Тема не про преимущества/недостатки С++ перед си и ассемблером. Тема про конкретную библиотеку для работы с портами.HHIMERA писал(а):И если у С++ есть неоспоримые преимущества, так покажите их...
Есть конечно. Буду рад услышать "целесообразность" и "наилучший/быстрый результат" применительно к данной темеHHIMERA писал(а):И любовь/ненависть тут совсем не при чём... есть такие понятия как "целесообразность" и "наилучший/быстрый результат"...
Повторюсь:ILYAUL писал(а):Так Вы нам не доказали чем она лучше традиционного подхода.
Про выполнение исходного кода компилятором написан бред. Он ничего не выполняет. Далее по пунктам:YS писал(а): Тогда я Вас очень удивлю. Если Вы напишете
то компилятор на этапе разбора (!) вычислит значение (((2+3)+4*8) | (1<<2)), и в код пойдетКод: Выделить всё
a=((2+3)+4*8) | (1<<2);
Да-да, компилятор выполнит написанный Вами код. А еще он может оптимизировать повторяющиеся части выражений. И при написании макросов вовсю этим пользуются. Макрос - не переменная. Он подставляется в исходник в виде строки.Код: Выделить всё
a=37;
Бред. На этапе разбора компилятор строит AST-дерево. При этом он ничего не вычисляет. Значение (((2+3)+4*8) | (1<<2)) будет вычислено на этапе многостадийной оптимизации в одной из стадий свёртки констант. Повторю ещё раз: компилятор ничего не выполняет!YS писал(а): компилятор на этапе разбора (!) вычислит значение (((2+3)+4*8) | (1<<2)),
Когда это я писал, что макрос - это переменная?YS писал(а): И при написании макросов вовсю этим пользуются. Макрос - не переменная. Он подставляется в исходник в виде строки.
Надуманно... одной строкой больше, одной меньше... не впечатляет...ArtDen писал(а): Повторюсь:
1. Нога определяется только в одном месте (1 строка). На си ради этого надо писать три строки:
#define XXXXX_PORT PORTA
#define XXXXX_DIR DDRA
#define XXXXX_BIT 0x01
Надуманно... есть статистические данные по этому поводу, которым можно верить??? "Капитана Очевидность не предлагать!"(С)2. Меньше вероятность допустить ошибки перепутав порты или биты
Надуманно... для этого есть абстракция...3. Лучшая читаемость
Надуманно... С++ не пользуюсь, а трудностей с переносом не ощущаю... "Что я не так делаю?" (С)4. Проще переносить код между аппаратными платформами
Во. Я второй раз уже слышу это слово в этой теме. Так что есть абстракция применительно к читаемости кода? Можно с примерами.HHIMERA писал(а):Надуманно... для этого есть абстракция...ArtDen писал(а): 3. Лучшая читаемость
Ещё раз повторюсь: речь идёт не про С++, а про библиотеку работы с портами. Вопросы по С/С++ обсуждаются в соседней теме.HHIMERA писал(а):Надуманно... С++ не пользуюсь, а трудностей с переносом не ощущаю... "Что я не так делаю?" (С)
Ладно... пусть будет так... вам виднее...ArtDen писал(а):Ещё раз повторюсь: речь идёт не про С++, а про библиотеку работы с портами. Вопросы по С/С++ обсуждаются в соседней теме.