В языке D есть флаг компилятора -betterC, он отключает использование классов, исключений и т.д., при этом оставляя доступными множество других улучшений. Точно такой-же флаг можно было бы использовать для С++, просто особой необходимости нет, потому что проблема с излишним функционалом языка исключительно в головах тех кто, как я уже говорил, сам себя ограничить неким подмножеством языка не может.
STM32 новичку в ARM что к чему
- Сообщения: 2089
- Зарегистрирован: Вс июн 19, 2016 09:32:03
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3907376#p3907376"]Это абсолютно разные языки. Ничего общего у них уже давным-давно нет. Разве что g++ умеет собирать сишные файлы.[/uquote]
В языке D есть флаг компилятора -betterC, он отключает использование классов, исключений и т.д., при этом оставляя доступными множество других улучшений. Точно такой-же флаг можно было бы использовать для С++, просто особой необходимости нет, потому что проблема с излишним функционалом языка исключительно в головах тех кто, как я уже говорил, сам себя ограничить неким подмножеством языка не может.
В языке D есть флаг компилятора -betterC, он отключает использование классов, исключений и т.д., при этом оставляя доступными множество других улучшений. Точно такой-же флаг можно было бы использовать для С++, просто особой необходимости нет, потому что проблема с излишним функционалом языка исключительно в головах тех кто, как я уже говорил, сам себя ограничить неким подмножеством языка не может.
- Реклама
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
[uquote="Reflector",url="/forum/viewtopic.php?p=3907449#p3907449"]потому что проблема с излишним функционалом языка исключительно в головах тех кто, как я уже говорил, сам себя ограничить неким подмножеством языка не может.[/uquote]Как увидят у файла расширение .cpp так и давай перегружать классами да вариативными шаблонами перемежая концептами и оператором <=> . 
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
[uquote="VladislavS",url="/forum/viewtopic.php?p=3907378#p3907378"]Eddy_Em, этот С++ код тоже совершенно нечитабельный?[/uquote]
Да, т.к. непонятно, что там за апостроф!
Да, т.к. непонятно, что там за апостроф!
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Я на гитхабе, в ЖЖ
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
[uquote="ARV",url="/forum/viewtopic.php?p=3907416#p3907416"]что этот апостроф означает - я не знаю, и знать не желаю[/uquote]
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3907472#p3907472"]Да, т.к. непонятно, что там за апостроф![/uquote]
Господа, вы сделали мой вечер!!!
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3907472#p3907472"]Да, т.к. непонятно, что там за апостроф![/uquote]
Господа, вы сделали мой вечер!!!
- Сообщения: 2089
- Зарегистрирован: Вс июн 19, 2016 09:32:03
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3907472#p3907472"]Да, т.к. непонятно, что там за апостроф![/uquote]
Это все мелочи, если вдруг будет принят N2522, это документ на 600 страниц со спецификацией общего С/C++ ядра, то монастыри по всему миру будут гарантированно переполнены
Это все мелочи, если вдруг будет принят N2522, это документ на 600 страниц со спецификацией общего С/C++ ядра, то монастыри по всему миру будут гарантированно переполнены
- Реклама
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
Reflector, да плевать - все равно C99 будет поддерживаться. А большего мне и не надо!
А там, глядишь, наркоманы, которые сейчас С++ расхваливают, на какой-нибудь хипстерский раст перейдут. Школьники уже сейчас пхытон мучают... В общем, меньше будет извращенцев, покушающихся на С!
А там, глядишь, наркоманы, которые сейчас С++ расхваливают, на какой-нибудь хипстерский раст перейдут. Школьники уже сейчас пхытон мучают... В общем, меньше будет извращенцев, покушающихся на С!
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Я на гитхабе, в ЖЖ
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
А "учитель" сказал с89 наше всё. Кому верить?
смотрите: триграфы есть испокон века. диграфы так же никто не отменял. операторов из двух символов уже полно, теперь добавляется оператор из трех символов. если тренд построить, то вскоре большинство комбинаций из 2 и 3 символов станут зарезервированными... а там недолго и до ситуации, о которой я писал: любой случайный набор символов станет корректной записью какой-то конструкции языка.VladislavS писал(а):и оператором <=>
чем это будет отличаться о брейнфака?
к чему приводить язык к уровню клинописи? неужели на самом деле проблема сравнений настолько велика, что вместо написания нескольких строк кода следует изменять стандарт языка, вводя очередной оператор?!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
ARV, вы даже не подозреваете, насколько далеко обсуждение оператора <=> теме "Для новичка". Так что, оставьте свои фантазии, ничего общего даже близко не имеющие с реальностью, при себе.
Спойлер
https://habr.com/ru/company/microsoft/blog/458242/но ведь не я его в тему "для новичка" привнес! почему же вы мне затыкаете рот?VladislavS писал(а):насколько далеко обсуждение оператора <=> теме "Для новичка"
а хабр я читал по этой теме (еще до того, как вы возбудились на мои слова), не буду озвучивать выводы, к которым я пришел
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
[uquote="ARV",url="/forum/viewtopic.php?p=3907571#p3907571"]а хабр я читал по этой теме[/uquote]Если бы читали, то не писали бы вот эту глупость[uquote="ARV",url="/forum/viewtopic.php?p=3907552#p3907552"]что вместо написания нескольких строк кода следует изменять стандарт языка, вводя очередной оператор?![/uquote]
О минусах C++ пишут те кто его знать не знает, а о плюсах С++ пишут те кто знает и С и С++. Интересный диалог...
Иван Сусанин - первый полупроводник 
И что интересного нашли?
Инженер R@D
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
- Сообщения: 386
- Зарегистрирован: Чт окт 31, 2013 10:54:32
Помогите оптимизировать код. Хочу получить задержки в ~0.3 и ~0.9мкс на пине 2 порта С. Допускается +- 0.15мкс
Контроллер stm32f100rbt6 частота 24 МГц
Переписываю код с стм8 на 32 битный, на стм8 делал подобное на асме, так же на частоте 24МГц.
Написал такой код на ассемблере, все это в цикле while. Пробую просто вкл и выкл пин.
В 1 строчке мы загружаем адрес PORTC_ODR_pin2 в регистр r2. Следующими строками загружаю 1 или 0 в регистр.
В итоге получаю картину

Время в сост включенном 2,542мкс, время в выключенном состоянии - 0,25мкс.
Как мне оптимизировать этот код, что бы время во включенном состоянии было примерно = в выключенном.
Контроллер stm32f100rbt6 частота 24 МГц
Переписываю код с стм8 на 32 битный, на стм8 делал подобное на асме, так же на частоте 24МГц.
Написал такой код на ассемблере, все это в цикле while. Пробую просто вкл и выкл пин.
Код: Выделить всё
asm("ldr r2, =(0x42000000+(0x4001100c-0x40000000)*32+2*4)");
asm("mov r1,#0");
asm("str r1, [r2]");
asm("mov r1,#1");
asm("str r1, [r2]");В итоге получаю картину
Время в сост включенном 2,542мкс, время в выключенном состоянии - 0,25мкс.
Как мне оптимизировать этот код, что бы время во включенном состоянии было примерно = в выключенном.
- Сообщения: 2089
- Зарегистрирован: Вс июн 19, 2016 09:32:03
- Сообщения: 386
- Зарегистрирован: Чт окт 31, 2013 10:54:32
[uquote="Reflector",url="/forum/viewtopic.php?p=3911985#p3911985"]Шимить не проще?[/uquote]
Нет, по сути делаю простой протокол для связи с одним устройством, и там нужны подобные задержки в 0,3 0,6 0,9 мкс и ресет в 80мкс
Нет, по сути делаю простой протокол для связи с одним устройством, и там нужны подобные задержки в 0,3 0,6 0,9 мкс и ресет в 80мкс
с регистрами напряг?
до цикла их загрузить нельзя?
на 329 стр. приводил пример компиляции Кейла, там ногодрыг регистром bsrr:
для записи и 0 и 1 используются два регистра (константа, адрес) значение формируется смещением.
до цикла их загрузить нельзя?
на 329 стр. приводил пример компиляции Кейла, там ногодрыг регистром bsrr:
для записи и 0 и 1 используются два регистра (константа, адрес) значение формируется смещением.
- Сообщения: 386
- Зарегистрирован: Чт окт 31, 2013 10:54:32
[uquote="a797945",url="/forum/viewtopic.php?p=3912107#p3912107"]на 329 стр. приводил пример компиляции Кейла, там ногодрыг регистром bsrr:
для записи и 0 и 1 используются два регистра (константа, адрес) значение формируется смещением.[/uquote]
Спасибо. Кое что сдвинулось.
Сейчас мой код такой, может кому пригодится.
Порт С, регистр BSRR, вкл-выкл 2 пин
Настройка:
Непосредственно включение и выключение пина
для записи и 0 и 1 используются два регистра (константа, адрес) значение формируется смещением.[/uquote]
Спасибо. Кое что сдвинулось.
Сейчас мой код такой, может кому пригодится.
Порт С, регистр BSRR, вкл-выкл 2 пин
Настройка:
Код: Выделить всё
asm("ldr r2, =0x40011010");
asm("movs r0,#0x04");
asm("mov.w r1,#0x40000");Код: Выделить всё
asm("str r0, [r2]");
asm("str r1, [r2]");- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
Во-первых, эффективнее BSRR и BRR использовать.
Во-вторых, не страдайте ерундой, на Си всё сильно проще.А на С++ ещё прощеРазбавить __NOP() по вкусу.
В-третьих, как вам уже говорили, PWM с DMA. STM32 WS2812B
Во-вторых, не страдайте ерундой, на Си всё сильно проще.
Код: Выделить всё
GPIOC->BSRR = GPIO_BSRR_BS2;
GPIOC->BRR = GPIO_BRR_BR2;
GPIOC->BSRR = GPIO_BSRR_BS2;
GPIOC->BRR = GPIO_BRR_BR2;
LDR.N R0,??main_0 ;; 0x40011010
MOVS R1,#+4
STR R1,[R0, #+0]
STR R1,[R0, #+4]
STR R1,[R0, #+0]
STR R1,[R0, #+4]
Код: Выделить всё
template<unsigned N, typename F>
__attribute__((always_inline)) inline void RepeatL(F f)
{
if constexpr (N>0) {f(); RepeatL<N-1>(f);}
}
RepeatL<5>([]{ GPIOC->BSRR=GPIO_BSRR_BS2; GPIOC->BRR=GPIO_BRR_BR2; });
LDR.N R0,??main_0 ;; 0x40011010
MOVS R1,#+4
STR R1,[R0, #+0]
STR R1,[R0, #+4]
STR R1,[R0, #+0]
STR R1,[R0, #+4]
STR R1,[R0, #+0]
STR R1,[R0, #+4]
STR R1,[R0, #+0]
STR R1,[R0, #+4]
STR R1,[R0, #+0]
STR R1,[R0, #+4]В-третьих, как вам уже говорили, PWM с DMA. STM32 WS2812B
[uquote="alex38779",url="/forum/viewtopic.php?p=3911989#p3911989"][uquote="Reflector",url="/forum/viewtopic.php?p=3911985#p3911985"]Шимить не проще?[/uquote]
Нет, по сути делаю простой протокол для связи с одним устройством, и там нужны подобные задержки в 0,3 0,6 0,9 мкс и ресет в 80мкс[/uquote]
Тот случай когда человек не знает архитектуру микроконтроллера и пытается делать ногодрыгом управление светодиодами.
С++ здесь тоже не нужен.
Нет, по сути делаю простой протокол для связи с одним устройством, и там нужны подобные задержки в 0,3 0,6 0,9 мкс и ресет в 80мкс[/uquote]
Тот случай когда человек не знает архитектуру микроконтроллера и пытается делать ногодрыгом управление светодиодами.
С++ здесь тоже не нужен.
Инженер R@D
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford


