-
- А есть хоть какой-то шанс, что в gcc завезут __builtin_rbit ? Простой пример VladislavS.(200 знак., 02.01.2022 11:33)
- У вас в двух последних предложениях есть противоречие - или С++ таки хороший - тогда почему нельзя написать универсально (под вашу платформу результат будет работать быстро, под не вашу - собираться и тормозить, но Вы же и не обещали оптимизацию по скорости, но зато собирается и работает), или таки не очень хороший (хотя для использования всех фич железа без использования асма - подходит - но тогда С остаётся кому нужна переносимость) - symbions(09.12.2021 09:09)
- Совет не использовать C вредный, необдуманный. Патетика. Но мысль о
том что C++ тяжел и непрост - верна. Результат использования C++
продемонстрирован в этой теме на примере std:stringstream -
желающим предлагается вступить в борьбу за уменьшение размера.
"Состояние души когда между asm/c++ стирается граница" тоже
патетика, поскольку абсолютно вся культура C++, в особенности
современная расчитана именно на высокий уровень, про ассемблер речи
не идет, и большинство C++ RxTx(105 знак., 08.12.2021 01:16)
- Думаю, что здесь не вина языка, а вина ... создателей std-библиотеки, большая часть которой написана так, что чёрт ногу сломит. - Kceния(08.12.2021 08:20)
- Почему следует использовать C? Потому что это оптимально. Embedded проекты в большинстве своем небольшой величины, разрабатываются и поддерживаются небольшим количеством разработчиков, и содержат механизмы наиболее корректно (достаточно) выражающиеся средствами C. Именно по этой же причине C используется в системном программировании UNIX, LINUX, RTOS, Windows, причем C++ считается Deprecated. - RxTx(08.12.2021 01:23)
- "люди!! не пишите код для эмбеддед на С - он вяжет Вам руки и ноги и выкалывает глаза," - остаётся вопрос как понять идеологию языка и научиться применять его? Не синтаксис, не понять что такое объект-класс-темплейт, а научиться применять язык как инструмент. Если проще - как постигнуть дзэн? - Dingo(07.12.2021 20:17)
- вроде как плэйнси тут ни в чём не виноват.. фyтбoлиcт(1 знак., 07.12.2021 07:59, , ссылка)
- По разным причинам лучше читать оригиналы на stackoverflow: RxTx(128 знак., 07.12.2021 13:54, ссылка, ссылка)
- мимо. в сырцы смотрите внимательнее. - фyтбoлиcт(08.12.2021 01:02, )
- Спасибо, впечатлило! - Dingo(07.12.2021 20:18)
- По разным причинам лучше читать оригиналы на stackoverflow: RxTx(128 знак., 07.12.2021 13:54, ссылка, ссылка)
- Так, возможно, возможно, я понял, о чем говорил Мастер Klen. И
вообще смысл С++ в embedded. Evgeny_CD(4056 знак., 06.12.2021 23:30, ссылка)
- Если всё сводится к выкидыванию "лишнего" кода, то в чём разница между СИ и С++ ? В СИ тоже можно линковать только то что требуется, а если очень приспичит - то можно "с оптимизировать и либу". - Zoro(07.12.2021 10:24)
- Но есть опасность. Если перейти на такой стиль мышления, что plain C покажется тоской. А хорошего C++ нет для очень многих архитектур, либо он C++11 в лучшем случае. - Evgeny_CD(07.12.2021 00:12)
- И RTOS надо строить из таких кусочков. И донастраивать кусочки в
зависимости от того, что оптимизируем. - Evgeny_CD(07.12.2021 00:00)
- Вы, вдвоем, изобрели TRON? Cкpипaч(930 знак., 07.12.2021 09:24)
- Мне не нравится постановка "правильно использовать". Имею к плюсам
лютую идиосинкразию, хотя и прокачал некоторые скилы по теме. Меня
вообще в разработке ПО расстраивает привязка к неязыкам (асм) и
диалектам (плюсы). Особенно к такому, ИМХО, костыльному набору
диалектов, как C++ Embedded. Развивайте. Успехов! Всё будет Rust:) - Vit(06.12.2021 21:25)
- Ржавый уже сложнее плюсов. Тех, кто не смог в плюсы, он просто сожрёт. - evgeniy1294(06.12.2021 22:39)
- позиция! нутром чую что выстрадано! уважаю! за ржавчика модно щас
топить, мне интиересно, смотрю в телескоп, пытась понять куда
уподет ракета которая еще не взлетела. может скатится как и ява. klen(1 знак., 06.12.2021 21:55, картинка)
- насчет ржавчины был стёб. хотя здорового там в идеях немало - Vit(06.12.2021 22:00)
- Я нашел библотеку для тренировки Klen. POCO Это старый, хорошо
продуманный проект. Интересно, во что его удастся утрамбовать Klen Evgeny_CD(2 знак., 06.12.2021 21:14, ссылка, ссылка)
- Вроде как библиотека хорошая. 0 — внешних зависимостей от остальных
библиотек. framer(1620 знак., 09.12.2021 17:47, ссылка, картинка)
- MCU с 2...4 МБайт кода до кризиса были вполне доступны. Меня больше
радует, что ОЗУ эта либа кушает диетические. Вот это важно! - Evgeny_CD(09.12.2021 20:41)
- С RAM не показатель. Там показано только статическое использование памяти. Все остальное куча. Сколько будет брать из кучи, можно определить только во время исполнения. Это отдельная тема. А на счёт внешнего RAM то не все так хорошо. Начинает хромать производительность. Никогда в мелких не достичь производительности на внешней RAM. Был когда то проект uClinux. Умер смертью натуральной из за этой проблем. Нет средней прослойки между мелкими и линуховыми MCU. Просто по framer(353 знак., 09.12.2021 21:54, ссылка)
- Есть несколько подзабытая тема MCU со SDRM. Немного, 8 МБайт,
например. Никаких Linux. MCU должен быть с хорошими кешами.
ColdFire был такой, да помер. Вот туда эта POCO и заточена. Я
приводил старые оценки требований аппаратуры для нее - 4 МБайт
минимум. - Evgeny_CD(09.12.2021 20:39)
- Вот все не пойму, почему тот же Нувотон не приколхозит 8-16МБ SDRAM
в свои старшие Cortex-M4 - LightElf(09.12.2021 20:43)
- Даже у Микрочипа вскоре после зажирания Atmel в презах был CM7 V70
с 8 Мб SDRAM. Потом исчез. - Evgeny_CD(09.12.2021 21:04)
- Я вспомнил про нувотон, так как они все это прекрасно умеют. И в
Cortex-M4 (и M7 есть от панаса), и в мультичиповые сборки с DRAM. И
модели ARM9 с 8МБ у них есть. Удивительно просто. - LightElf(09.12.2021 21:10)
- Есть. Только flash для Nuvoton стоит 10 баксов. Так что лучше
забыть. - Samum(01.01.2022 10:59, )
- Не понял. Можете расшифровать? - LightElf(01.01.2022 13:38)
- Однако есть SAM9X60D5M-I/4FB ARM926 600 MHz 512МБит Evgeny_CD(25 знак., 09.12.2021 21:45)
- Есть. Только flash для Nuvoton стоит 10 баксов. Так что лучше
забыть. - Samum(01.01.2022 10:59, )
- Я вспомнил про нувотон, так как они все это прекрасно умеют. И в
Cortex-M4 (и M7 есть от панаса), и в мультичиповые сборки с DRAM. И
модели ARM9 с 8МБ у них есть. Удивительно просто. - LightElf(09.12.2021 21:10)
- Даже у Микрочипа вскоре после зажирания Atmel в презах был CM7 V70
с 8 Мб SDRAM. Потом исчез. - Evgeny_CD(09.12.2021 21:04)
- Вот все не пойму, почему тот же Нувотон не приколхозит 8-16МБ SDRAM
в свои старшие Cortex-M4 - LightElf(09.12.2021 20:43)
- MCU с 2...4 МБайт кода до кризиса были вполне доступны. Меня больше
радует, что ОЗУ эта либа кушает диетические. Вот это важно! - Evgeny_CD(09.12.2021 20:41)
- Вроде как библиотека хорошая. 0 — внешних зависимостей от остальных
библиотек. framer(1620 знак., 09.12.2021 17:47, ссылка, картинка)
- сразу сообщаю - вброс говна на вентилятор про С vs С++ это как
повод задуматься как улучшить то чем мы занимаемся - разработкой.
никого испачкать не планирую :) ну так на всякий случай - вдруг
религиозные чувства задену. мнение не может совпадать с дорогой
редакцией и я конечно неправ :) - klen(06.12.2021 15:31)
- Наброшу. framer(546 знак., 06.12.2021 17:47, картинка, картинка)
- РАЗБОР предложенного случая framer klen(3302 знак., 06.12.2021 19:25)
- Вот интересное замечание. Да действительно, где объекты только с пустым конструктором и не используются то прироста кода нет. Оптимизатор их чикает. Но если вызвать со списком инициализации тогда прирост кода есть. Есть разница между: framer(602 знак., 06.12.2021 21:33, картинка)
- Был такой проект - uSTL. Да сплыл. This library is obsolete. Please
use the official gcc C++ standard library. Evgeny_CD(1 знак., 06.12.2021 20:39, ссылка)
- ETL - Embedded Template Library Evgeny_CD(2 знак., 06.12.2021 20:50, ссылка, ссылка)
- EASTL - Electronic Arts Standard Template Library, (старая 2007)
для встроенных систем, игровых приставок и т.д. и исходники. Costic(50 знак., 14.01.2022 17:26, ссылка, ссылка)
- Спасибо! - Evgeny_CD(14.01.2022 17:35)
- Смотрите на гитхабе ustring и uvector - альтернатива std::string и std::vector, для embedded решений без проблем с фрагментацией кучи. Totoro(2 знак., 03.01.2022 01:26, , ссылка, ссылка)
- EASTL - Electronic Arts Standard Template Library, (старая 2007)
для встроенных систем, игровых приставок и т.д. и исходники. Costic(50 знак., 14.01.2022 17:26, ссылка, ссылка)
- ETL - Embedded Template Library Evgeny_CD(2 знак., 06.12.2021 20:50, ссылка, ссылка)
- Написание собственного аллокатора - задача не тривиальная, а
алгоритмами аллкокации могут заниматься целые кафедры вузов. Часто
достаточно обычного placement new, например, для буферов
приёмопередатчиков его хватает с головой. Да и в std-контейнерах
особой нужды нет, для своих проектов я реализовал stl-совместимые
кольцевой буфер, связный список и кое-чего ещё по мелочи. - evgeniy1294(06.12.2021 20:35)
- ничего страшного, писали используем, летает и не падает тежеде
воздуха. скоро выложу - удивитесь как это просто. да - там наука
глубокая. . потому и реализация красивая. сложность выборки O1. а
на кафедрах мы и есть :) - klen(06.12.2021 20:57)
- Покажите пример аллокатора своего. Costic(301 знак., 06.12.2021 21:34)
- Выкладывайте, покопаюсь с удовольствием. - evgeniy1294(06.12.2021 20:59)
- ничего страшного, писали используем, летает и не падает тежеде
воздуха. скоро выложу - удивитесь как это просто. да - там наука
глубокая. . потому и реализация красивая. сложность выборки O1. а
на кафедрах мы и есть :) - klen(06.12.2021 20:57)
- Спасибо! Однако страшно стало. Если "newlib" каждый раз под новый
MCU переписывать, пусть даже с 10го раза будет навык это делать, то
затраты времени будут велики. А можно какой-нибудь "HAL",
средствами C++20, конечно, выделить, чтобы все остальное было
архитектурно независимо. Evgeny_CD(103 знак., 06.12.2021 20:30)
- Не надо ничего переписывать, просто не пользуйтесь тем, чему нет
места в эмбеддете. Впихивание невпихуемого - занятие крайне
интересное, но бизнес на это денег не даёт. - evgeniy1294(06.12.2021 20:39 - 21:00)
- nanolib оттуда же вполне рабочий огрызок. - Vit(06.12.2021 20:46)
- Вот мы и пришли к дзену. Берем голый C++20, выбираем концепцию кода
целевой системы, и быстренько пишем все части кода в рамках
концепции. В принципе, выглядит цельно. Главное, чтобы пенсия не
наступила раньше, чем завершится проект. - Evgeny_CD(06.12.2021 20:42)
- Я бы сказал по другому: на плюсах пишем реализацию минимального
окружения в виде софтовых таймеров, облегченных(не требующих
аллокации) контейнеров, математики (фильтров, например) и всякой
мелочевки. BSP пишем на HAL от вендора, то, что трахает мозг,
переписаваем сами или пишем в техподдержку. Этого достаточно как
для реализации логики, так и для написания синтетического порта,
основная идея - бизнес логика как библиотека. evgeniy1294(85 знак., 06.12.2021 20:54)
- ход мысли вроде да, но я и HAL переписал.... так получилось и не
желею, времени конечно много, но всегда есть премия за старание -
реф мануал для stm32f4 stm32f7 stm32h7 почти наизусть познал,
многое только с микроскопом видно становится. - klen(06.12.2021 21:14)
- А потом у вас появляется камень от TI с их знаменитым "Use TI
library". - evgeniy1294(06.12.2021 21:29)
- почему появится, был и наверно будет. я кейстоун все помучить
хотел.. - klen(06.12.2021 21:45)
- Да да! 66AK2G12 наше будущее все! Индустриальный +125°С даже сейчас лежит DigiKey. Evgeny_CD(1 знак., 06.12.2021 22:34, ссылка)
- почему появится, был и наверно будет. я кейстоун все помучить
хотел.. - klen(06.12.2021 21:45)
- А потом у вас появляется камень от TI с их знаменитым "Use TI
library". - evgeniy1294(06.12.2021 21:29)
- ход мысли вроде да, но я и HAL переписал.... так получилось и не
желею, времени конечно много, но всегда есть премия за старание -
реф мануал для stm32f4 stm32f7 stm32h7 почти наизусть познал,
многое только с микроскопом видно становится. - klen(06.12.2021 21:14)
- Я бы сказал по другому: на плюсах пишем реализацию минимального
окружения в виде софтовых таймеров, облегченных(не требующих
аллокации) контейнеров, математики (фильтров, например) и всякой
мелочевки. BSP пишем на HAL от вендора, то, что трахает мозг,
переписаваем сами или пишем в техподдержку. Этого достаточно как
для реализации логики, так и для написания синтетического порта,
основная идея - бизнес логика как библиотека. evgeniy1294(85 знак., 06.12.2021 20:54)
- как то не так все страшно. это от непонимания и от того что Вы еще этого не делали. попробуете - понравится. и прибудет с Вами СИЛА! ну не боги же libc писал, gcc не они писали - мы - люди этой планеты, простые, но очень желающие двигаться вперед а не назад :) - klen(06.12.2021 20:59)
- Не надо ничего переписывать, просто не пользуйтесь тем, чему нет
места в эмбеддете. Впихивание невпихуемого - занятие крайне
интересное, но бизнес на это денег не даёт. - evgeniy1294(06.12.2021 20:39 - 21:00)
- Большое спасибо за детальный разбор. - framer(06.12.2021 19:53)
- Еще если бы карта этих зависимостей была бы доступна...тогда можно было бы построить пространство фич С++, и в нем жить в проекте. - Evgeny_CD(06.12.2021 18:02)
- Какой компилер? - Evgeny_CD(06.12.2021 17:59)
- arm-none-eabi-gcc (GNU Tools for STM32 9-2020-q2-update.20201001-1621) 9.3.1 20200408 (release) Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - framer(06.12.2021 18:08)
- Это с LTO? - Nikolay_Po(06.12.2021 17:50)
- Библиотека собрана без LTO, поэтому это неважно. - SciFi(06.12.2021 18:04)
- Вот так с LTO framer(1 знак., 06.12.2021 17:58, картинка)
- РАЗБОР предложенного случая framer klen(3302 знак., 06.12.2021 19:25)
- Наброшу. framer(546 знак., 06.12.2021 17:47, картинка, картинка)
- Уговорил. Будем кодить на исконно-посконном ЦЭ :) - Гyдвин(06.12.2021 13:47)
- я несомневался :) старая телега скрипит дольше чем новая разваливается ;) - klen(06.12.2021 15:03)
- Я же подожду C++ 35, может, они к тому времени остепенятся. А пока
тоже православный цэ :-) - SciFi(06.12.2021 14:11)
- да.. тут планируется фундаментальная ломка. в текщем драфте не
решились abi ломать - ибо боятся с ходу не реализуешь стандарт. но
то что мы имеем очень сильно тормозит улучшения, много
противоречивых концепций. хорошо что поняли наконец то что
абстрактный язвк не приводит к счястью, нужнго мозгами думать как
сохранить независимость от реализации и при этом не отнимать
инструментов постучатся в подвал и при необходимости всунуть туда
лопату уголька на разгон. - klen(06.12.2021 15:17)
- Нужен субъязык управления кодогенератором. Но боюсь, на его фоне
накуренный С++ покажется простым и понятным. - Evgeny_CD(06.12.2021 15:22)
- Xilinx HLS Zoro(96 знак., 06.12.2021 15:39)
- Это чуть другое. Это С-> RTL, который таки register transfer,
для FPGA или ASIC - Evgeny_CD(06.12.2021 15:42)
- но там есть управление процессом "кодогенерации" - Zoro(06.12.2021 15:47)
- Ага, спасибо! - Evgeny_CD(06.12.2021 15:49)
- но там есть управление процессом "кодогенерации" - Zoro(06.12.2021 15:47)
- Это чуть другое. Это С-> RTL, который таки register transfer,
для FPGA или ASIC - Evgeny_CD(06.12.2021 15:42)
- я бы от такого инструмента не отказался бы. мой опыт такой - какой бы сложный инструмент я не осваивал - он окупает и дает профит. нельзя все впишнуть водин швейцарский нож - ни вепря не разделаешь, ни рану не прижгешь - klen(06.12.2021 15:35)
- Xilinx HLS Zoro(96 знак., 06.12.2021 15:39)
- Нужен субъязык управления кодогенератором. Но боюсь, на его фоне
накуренный С++ покажется простым и понятным. - Evgeny_CD(06.12.2021 15:22)
- да.. тут планируется фундаментальная ломка. в текщем драфте не
решились abi ломать - ибо боятся с ходу не реализуешь стандарт. но
то что мы имеем очень сильно тормозит улучшения, много
противоречивых концепций. хорошо что поняли наконец то что
абстрактный язвк не приводит к счястью, нужнго мозгами думать как
сохранить независимость от реализации и при этом не отнимать
инструментов постучатся в подвал и при необходимости всунуть туда
лопату уголька на разгон. - klen(06.12.2021 15:17)
- Спасибо! Если грань между C++ и asm стереть, то это будет хуже, чем
большой проект на asm. Переносимости по архитектуре не будет.
Совместимость с C++25 (условно) не факт что будет. Лучше уж
хардкорно, на асме. Иначе надо знать два дзена - С++ и asm. - Evgeny_CD(06.12.2021 13:37)
- Где там что про асм? Ключи компилятору, какие возможности
использовать. Вроде всё на этом. - Dingo(06.12.2021 14:31)
- "но нужно стремится к состоянию души когда между asm/c++ стирается граница." - Evgeny_CD(06.12.2021 14:51)
- Ерунду пишите, Евгений. Или я вас неправильно понимаю. Вся прелесть
в том, что современный компилятор, с отлаженной оптимизацией LTO,
стирает грань между программированием на ассемблере и
программированием на С++. Надписанный на C++ код, оптимизируется
компилятором на уровне инструкций контроллера, считай, в
ассемблере. Делая использование ассемблера разработчиком
бессмысленным. Nikolay_Po(647 знак., 06.12.2021 13:54)
- я удивлен и сильно обрадован.... оказываеццо есть все таки надежда
и свет в нашем стаде эмбеддед програмеров! Вы почти точно выразили
ситуацию и мысли которыми руководствоваться комитет по стандарту.
единственное уточнение - современный С++ позволяет программисту
указать компилятору. как бы помогать ему генерить этот самый
правильный и эффективный асм код, ты как бы пишешь на асме но
категориями высокоуровнего С++. Фокус в том что при этом не
теряется независимость от klen(803 знак., 06.12.2021 14:50 - 14:55)
- Можно подробнее, где в низкоуровневой части С++ улучшения по
сравнению с С, которые позволяют программисту помогать компилеру
лучше генерить код? - Evgeny_CD(06.12.2021 14:54)
- самое поверхностное и понятное, шаблоны, ссылки, constexpr consteval, constinit, lamda, примеры где проглядывается связь именно с таргетом и его
инструкциями и регистрами я приведу пожже и мы это разберем. это
чуть посложнее. Все дело в том что С++ вниз умеет протолкнуть
больше информации об организации данных и их связях. - klen(06.12.2021 15:02)
- Странно, что сейчас виртуальные функции и перегрузку операторов не ценят. По-моему, они - самое лучшее в С++. - Costic(06.12.2021 21:29)
- Шаблоны, ссылки, лямбды - мне кажется это не про оптимизацию, а про
упрощение кодирования. А все сорта const... это исключительно от
разделения компиляции и линковнки. Если предположить, что
разделения нет, то компилятор сам может догадаться, где нужно
вызвать функцию sin(x) , а где заменить на константу sin(1) - AlexBi(06.12.2021 15:43)
- это то да, но опять же не относится к обсуждаемой теме - это
одинаково работает и для С и для С++. разницв будет когда в Вы в
месте вызова как аргумент вставите лямду с этим сраным синусом (0)
= 0. С++ вообще обрежет и верхнюю функцию, в С это может не
сработать потому как он обязан вызвать функцию с аргументом. - klen(06.12.2021 15:47)
- Т.е. в С++ неявно встроен интерпретатор С++? Иначе как компилер
вычислит значение сложной функции? - Evgeny_CD(06.12.2021 15:55)
- Никаких интерпретаторов не встроено. Существует оптимизация библиотечных stdlib встроенных функций. sin() относится к ним. Стоит только указать в параметрах -fno-builtin как радостный пример выше не сработает. - RxTx(07.12.2021 13:48)
- конечно! правда с С он тоже всктроен и тот же самый почти но С++
больше инфы может спустить в подвал. как эксперимент - напишите
функцию и скомпилите С и С++ компилятором gcc и потом посмотрите
objdump различия в заголовках объектников - их много, там хранися
много информации, она пихается далее линкеру и плагинам
оптимизации. - klen(06.12.2021 16:54)
- Потому что С++ монструозен. Без тонкой оптимизации ему ваще кирдык. - Evgeny_CD(06.12.2021 18:07)
- C++ является надмножеством C, а C является подмножеством C++. Делаем выводы. - RxTx(07.12.2021 13:49)
- Потому что С++ монструозен. Без тонкой оптимизации ему ваще кирдык. - Evgeny_CD(06.12.2021 18:07)
- Т.е. в С++ неявно встроен интерпретатор С++? Иначе как компилер
вычислит значение сложной функции? - Evgeny_CD(06.12.2021 15:55)
- это то да, но опять же не относится к обсуждаемой теме - это
одинаково работает и для С и для С++. разницв будет когда в Вы в
месте вызова как аргумент вставите лямду с этим сраным синусом (0)
= 0. С++ вообще обрежет и верхнюю функцию, в С это может не
сработать потому как он обязан вызвать функцию с аргументом. - klen(06.12.2021 15:47)
- Жалкое подобие левой руки, эти ваши шаблоны с константными
выражениями! То ли дело на макросах препроцессора навернуть! - LightElf(06.12.2021 15:26)
- фууууууууууууууу........ как Вы могли так низко пасть...... еще не
поздно раскаяться ;) кстати циркулируют предложения наконец то
макросы в будущих стандартах сжечь на костре как мракобесие - klen(06.12.2021 15:30)
- Тогда это будет просто другой стандарт другого языка. - Evgeny_CD(06.12.2021 15:40)
- Препроцессор - практически Тьюринг-полный, а вот как с этим у
шаблонов и константных выражений? Хотя конечно замена CPP на
какой-нить AWK напрашивается с давних времен. - LightElf(06.12.2021 15:33)
- Лучше Perl встроить, чтобы в ходе сборки проекта была возможность
запускать стандартизованные скрипты. Чтобы при компилироапнии файла
у меня зарустился скрипт, что-то там динамически внутри файла
изменил, и потом это сожрал компилер... - Evgeny_CD(06.12.2021 15:37)
- AWK кошернее и аутентичнее - Керниган голова!. Давным-давно, в
сорцах OpenGL от SGI, куева туча похожих, но чуть-чуть различных,
сишных функций генерировалась в процессе сборки AWK-скриптом. - LightElf(06.12.2021 18:19)
- MQX RTCS SNMP Agent, генерится сишник из MIB при помощи скриптов
AWK. - SciFi(06.12.2021 18:20)
- Я же говорю Perl! Он, в целом, наследник AWK, полноценный язык
программирования, в отличие от него. - Evgeny_CD(06.12.2021 18:31 - 18:35)
- теоретег детектед :-) - SciFi(06.12.2021 18:34)
- Ты против Perl? - Evgeny_CD(06.12.2021 18:36)
- Я сначала подумал, что про Perl - это прикол или троллинг. Perl
сложно читать и понимать. Python нынче в моде - проще и понятнее. - Costic(06.12.2021 21:27)
- Raku (Perl 6 в девичестве) совершенен. Я, конечно же, его имел в виду. Богомерзкий пытон - это неправильно для С мышления. Педивикия вполне точна. Evgeny_CD(1 знак., 06.12.2021 21:50, ссылка)
- Я за AWK! - SciFi(06.12.2021 18:41)
- Я сначала подумал, что про Perl - это прикол или троллинг. Perl
сложно читать и понимать. Python нынче в моде - проще и понятнее. - Costic(06.12.2021 21:27)
- Ты против Perl? - Evgeny_CD(06.12.2021 18:36)
- теоретег детектед :-) - SciFi(06.12.2021 18:34)
- Я же говорю Perl! Он, в целом, наследник AWK, полноценный язык
программирования, в отличие от него. - Evgeny_CD(06.12.2021 18:31 - 18:35)
- MQX RTCS SNMP Agent, генерится сишник из MIB при помощи скриптов
AWK. - SciFi(06.12.2021 18:20)
- это мне напоминает экстремиское движение - "а давайте мы из gnu
make сделаем CMAKE..... нее лучше SCons.... не лучше XXX " - klen(06.12.2021 15:50)
- Нет, не make! Прямо посреди С кода строка на Perl... - Evgeny_CD(06.12.2021 15:53)
- Есть подобное для вставки Python посреди C/C++ кода, Cog
называется. AlexG(17 знак., 06.12.2021 16:40)
- Сводный топик Evgeny_CD(1 знак., 06.12.2021 17:31, ссылка)
- Тов. bialix в апреле 2006года познакомил нас с этим полезным утилем :) Хочется больше, и по стандарту. Evgeny_CD(1 знак., 06.12.2021 17:21, ссылка)
- если дойдет до такого, то только не Java, я такого позора не вынесу
физически - klen(06.12.2021 15:58)
- Разве я жабу поминал всуе? - Evgeny_CD(06.12.2021 16:00)
- у меня это больное место - сколько боевых товарищей потерял... ушли
в блуд и не вернулись - klen(06.12.2021 16:57)
- Темная сторона силы привлекательна! - Evgeny_CD(06.12.2021 17:25)
- у меня это больное место - сколько боевых товарищей потерял... ушли
в блуд и не вернулись - klen(06.12.2021 16:57)
- Разве я жабу поминал всуе? - Evgeny_CD(06.12.2021 16:00)
- Есть подобное для вставки Python посреди C/C++ кода, Cog
называется. AlexG(17 знак., 06.12.2021 16:40)
- Нет, не make! Прямо посреди С кода строка на Perl... - Evgeny_CD(06.12.2021 15:53)
- AWK кошернее и аутентичнее - Керниган голова!. Давным-давно, в
сорцах OpenGL от SGI, куева туча похожих, но чуть-чуть различных,
сишных функций генерировалась в процессе сборки AWK-скриптом. - LightElf(06.12.2021 18:19)
- Лучше Perl встроить, чтобы в ходе сборки проекта была возможность
запускать стандартизованные скрипты. Чтобы при компилироапнии файла
у меня зарустился скрипт, что-то там динамически внутри файла
изменил, и потом это сожрал компилер... - Evgeny_CD(06.12.2021 15:37)
- фууууууууууууууу........ как Вы могли так низко пасть...... еще не
поздно раскаяться ;) кстати циркулируют предложения наконец то
макросы в будущих стандартах сжечь на костре как мракобесие - klen(06.12.2021 15:30)
- Почитал, например, про consteval, не увидел какого-то особого,
высшего смысла. Evgeny_CD(1 знак., 06.12.2021 15:20, ссылка)
- Для практического применения всей этой красоты нужен хороший опенсорцный транспилер из "нового Цэ" в K&R. Патамучта под некоторые все еще актуальные архитектуры эти ваши GCC и LLVM не натянуть. - LightElf(07.12.2021 12:36)
- +1, const он и в Африке... всего лишь замена (дополнение)
препроцессору. - Costic(06.12.2021 21:31)
- А вот и нет, оно разное. Потому как может использоваться в метапрограммировании с зависимостью результата от типов(!) входящих данных, помогать оптимизировать код в зависимости от результата, а также гарантировать выполнение в compile-time. Препроцессор гораздо слабее. - evgeniy1294(06.12.2021 21:36)
- consteval нужен, потому что, в отличие от constexpr, может быть выполнен только в compile-time. Это позволяет писать до предела оптимизированный код, я приводил пример своей работы в плане работы с периферией МК - вот там он всплывает во весь рост. - evgeniy1294(06.12.2021 20:46)
- тут нужны примеры с выходным асмом. мне нужно подготовится чтобы
показать суть. тема то на книгу и учебный курс тянет: "Эффективное
использование С/С++ при программировании встраиваемых систем:
возможности крайних стандартов" - klen(06.12.2021 15:27)
- Причем эта книга помощнее Х&Х будет. - Evgeny_CD(06.12.2021 15:33)
- К моменту выхода книги стандарт аккурат в очередной раз и
поменяется :))) - Chum_A(07.12.2021 08:51)
- Хорошо, если один раз :) - Evgeny_CD(07.12.2021 12:59)
- это точно, мысль не про то как код писать, а как его
"проектировать" используя возможности инструмента и конкретного
процессора. - klen(06.12.2021 15:43)
- Повторюсь - проектирование это всегда на языке целевой задачи. Язык
процессора - это потом.
А лучше - никогда.Cкpипaч(85 знак., 06.12.2021 21:38) - UML уже обещал нам революцию в проектировании кода, но нынче про
него даже не вспоминают. - Evgeny_CD(06.12.2021 18:33)
- Неудачи UML (и т.п.), ИМХО в том, что не многие конторы могут позволить себе (или просто не могут) написать банальное ТЗ на встроенное ПО. Т.е. ТЗ это такое звено, которое можно и прокинуть, а исполнителю объяснить на пальцах, салфетке и т.п. А лучше, если он сам себе всё объяснит. В свою очередь и исполнители увидев эту UML-хрень шарахаются как черт от ладана. - Chum_A(07.12.2021 09:00)
- Повторюсь - проектирование это всегда на языке целевой задачи. Язык
процессора - это потом.
- К моменту выхода книги стандарт аккурат в очередной раз и
поменяется :))) - Chum_A(07.12.2021 08:51)
- Причем эта книга помощнее Х&Х будет. - Evgeny_CD(06.12.2021 15:33)
- Зайдем с другой стороны. Хороших книг по C++ с прицелом на ebedded катастрофически мало. Тайное знание никак не удается распространить. - Evgeny_CD(06.12.2021 15:04)
- Я лох в С++, но мне понимается обратное. Скорее С можно натьюнить
так, особенно, если специфическими GCC расширениями и прагмами
пользоваться, чтобы код стал более эффективным. - Evgeny_CD(06.12.2021 15:01)
- дык это не считается! потому как все что Вы перечислили
(расширения, прагмы, опции компиляции, аттрибуты данных и функций)
- одинаково работает и для С идля С++, то есть про то как из молока
сделать сыр или масло, а мы про то какое молоко будет от коровы а
ковкое от козы,. срач именно про то что различно ;) речь именно про
языки - каков промежуточный RTL код. - klen(06.12.2021 15:07)
- ? register-transfer level (RTL) - это одна из стадий проектирования
железа в HDL Evgeny_CD(1 знак., 06.12.2021 15:12, ссылка)
- Я чувствую всеобщий предновогодний прилив сил после тяжелого года,
Евгений! Вы сегодня жжете! :) как вам такое Register Transfer
Language (RTL) klen(1 знак., 06.12.2021 15:21, ссылка)
- Так, блин, как получить доступ к RTL в процессе написания проекта? Как делать вставки на RTL? - Evgeny_CD(06.12.2021 15:38)
- Выпал в осадок. Похоже, это то, что я совсем недавно "изобрел".
Прикидывал способы оптимизации написания асм кода, и придумал такой
"архитектурно-малозависимый асм"... - Evgeny_CD(06.12.2021 15:31)
- для справки - изобретатели велосипеда LLVM это все те же лица что и
GCC :) - klen(06.12.2021 15:39)
- IR довольно непрост для ручного написания. - Evgeny_CD(06.12.2021 15:43)
- примерно туда же: klen(1 знак., 06.12.2021 15:55, ссылка)
- Спасибо! - Evgeny_CD(06.12.2021 15:59)
- примерно туда же: klen(1 знак., 06.12.2021 15:55, ссылка)
- IR довольно непрост для ручного написания. - Evgeny_CD(06.12.2021 15:43)
- для справки - изобретатели велосипеда LLVM это все те же лица что и
GCC :) - klen(06.12.2021 15:39)
- Я чувствую всеобщий предновогодний прилив сил после тяжелого года,
Евгений! Вы сегодня жжете! :) как вам такое Register Transfer
Language (RTL) klen(1 знак., 06.12.2021 15:21, ссылка)
- ? register-transfer level (RTL) - это одна из стадий проектирования
железа в HDL Evgeny_CD(1 знак., 06.12.2021 15:12, ссылка)
- дык это не считается! потому как все что Вы перечислили
(расширения, прагмы, опции компиляции, аттрибуты данных и функций)
- одинаково работает и для С идля С++, то есть про то как из молока
сделать сыр или масло, а мы про то какое молоко будет от коровы а
ковкое от козы,. срач именно про то что различно ;) речь именно про
языки - каков промежуточный RTL код. - klen(06.12.2021 15:07)
- самое поверхностное и понятное, шаблоны, ссылки, constexpr consteval, constinit, lamda, примеры где проглядывается связь именно с таргетом и его
инструкциями и регистрами я приведу пожже и мы это разберем. это
чуть посложнее. Все дело в том что С++ вниз умеет протолкнуть
больше информации об организации данных и их связях. - klen(06.12.2021 15:02)
- Можно подробнее, где в низкоуровневой части С++ улучшения по
сравнению с С, которые позволяют программисту помогать компилеру
лучше генерить код? - Evgeny_CD(06.12.2021 14:54)
- Я понял Klen так, что он предлагает широко использовать asm вставки
в накуренном C++ коде - Evgeny_CD(06.12.2021 14:05)
- та нии шо Вы такое гооворите! асм вставки и в С можно всnавлять -
тут как раз паритет :) - klen(06.12.2021 15:12)
- А в чем фишка? Разве С++ позволяет шаблонизировать асм вставку? - Evgeny_CD(06.12.2021 15:17)
- та нии шо Вы такое гооворите! асм вставки и в С можно всnавлять -
тут как раз паритет :) - klen(06.12.2021 15:12)
- я удивлен и сильно обрадован.... оказываеццо есть все таки надежда
и свет в нашем стаде эмбеддед програмеров! Вы почти точно выразили
ситуацию и мысли которыми руководствоваться комитет по стандарту.
единственное уточнение - современный С++ позволяет программисту
указать компилятору. как бы помогать ему генерить этот самый
правильный и эффективный асм код, ты как бы пишешь на асме но
категориями высокоуровнего С++. Фокус в том что при этом не
теряется независимость от klen(803 знак., 06.12.2021 14:50 - 14:55)
- Где там что про асм? Ключи компилятору, какие возможности
использовать. Вроде всё на этом. - Dingo(06.12.2021 14:31)