Наше внимание привлёк репозиторий Electronic Arts на GitHub. Он очень маленький и из двадцати трёх проектов нас заинтересовали только несколько C++ библиотек: EASTL, EAStdC, EABase, EAThread, EATest, EAMain и EAAssert. Проекты оказались тоже очень маленькими (около 10 файлов), поэтому мы нашли ошибки только в «самом большом» из 20 файлов :D Но нашли, и интересные! Пока писалась заметка, мы с коллегами также бурно обсудили игры компании EA и её стратегию :D
Рубрика «C» - 29
Библиотеки Electronic Arts почти хорошего качества
2019-07-29 в 6:35, admin, рубрики: C, c++, ea games, Electronic Arts, open source, pvs-studio, static analysis, Блог компании PVS-Studio, разработка игрЧасть 5-2 корп. 1: Перекрёсток проспекта RocketChip и скользкой дорожки инструментации
2019-07-28 в 9:54, admin, рубрики: C, eBPF, fpga, open source, risc-v, rocc, rocketchip, scala, инструментация, ненормальное программированиеВ предыдущих четырёх частях велась подготовка к экспериментам с RISC-V ядром RocketChip, а именно, портирование этого ядра на «нестандартную» для него плату с ПЛИС фирмы Altera (теперь уже Intel). Наконец, в прошлой части на этой плате получилось запустить Linux. Знаете, что меня во всём этом забавляло? То, что одновременно приходилось работать с ассемблером RISC-V, C и Scala, и из всех них Scala была самым низкоуровневым языком (потому что именно на ней написан процессор).
Давайте в этой статье сделаем так, чтобы C тоже не было обидно. Более того, если связка Scala+Chisel использовалась лишь как domain-specific language для явного описания аппаратуры, то сегодня мы научимся «затягивать» простенькие функции на C в процессор в виде инструкций.
Конечная же цель — тривиальная реализация тривиальных AFL-like инструментаций по аналогии с QInst, а реализация отдельностоящих инструкций — лишь побочный продукт.
Arduino таймер
2019-07-27 в 13:01, admin, рубрики: C, c++, diy или сделай сам, автоматический курятник, Разработка под ArduinoДобрый день. Меня зовут Никита Сергеевич, мне 14 лет и в этом посте я имею желание рассказать вам о разработанною мною пол года назад устройстве (и приложении), потому что готовое устройство спаял и собрал мой отец. Хотя возможно такое устройство вы уже видели не раз, но мне это не мешает.
Создавалось все это для автоматического включения и выключения света в курятнике, но применимо и для других целей.
Лучшие Copy-Paste алгоритмы для C и C++. Сборник рецептов Haiku OS
2019-07-26 в 16:38, admin, рубрики: C, c++, Haiku, open source, pvs-studio, Блог компании PVS-Studio, СофтМногочисленные опечатки и Copy-Paste код стали темой для дополнительной статьи о проверке кода Haiku анализатором PVS-Studio. Впрочем, будут ошибки, связанные не сколько с опечатками, а скорее с невнимательностью и неудачным рефакторингом. Найденные примеры ошибок демонстрируют, насколько силён человеческий фактор в разработке программного обеспечения.
Как выстрелить себе в ногу в C и C++. Сборник рецептов Haiku OS
2019-07-25 в 6:13, admin, рубрики: C, c++, Haiku, open source, pvs-studio, static code analysis, Блог компании PVS-Studio, СофтИстория встречи статического анализатора PVS-Studio с кодом операционной системы Haiku уходит в далёкий 2015-й год. Это был интереснейший эксперимент и полезный опыт для команд обоих проектов. Почему эксперимент? Анализатора для Linux тогда не было и не будет ещё полтора года. Но труды энтузиастов нашей команды были вознаграждены: мы познакомились с разработчиками Haiku и повысили качество кода, пополнили базу редкими ошибками программистов и доработали анализатор. Сейчас проверить код Haiku на наличие ошибок можно легко и быстро.
How to shoot yourself in the foot in C and C++. Haiku OS Cookbook
2019-07-25 в 6:09, admin, рубрики: C, c++, Haiku, open source, pvs-studio, static code analysis, Блог компании PVS-StudioThe story of how the PVS-Studio static analyzer and the Haiku OS code met goes back to the year 2015. It was an exciting experiment and useful experience for teams of both projects. Why the experiment? At that moment, we didn't have the analyzer for Linux and we wouldn't have it for another year and a half. Anyway, efforts of enthusiasts from our team have been rewarded: we got acquainted with Haiku developers and increased the code quality, widened our error base with rare bugs made by developers and refined the analyzer. Now you can check the Haiku code for errors easily and quickly.
Пять лет использования C++ под проекты для микроконтроллеров в продакшене
2019-07-24 в 3:41, admin, рубрики: C, c++, личный опыт, микроконтроллеры, программирование микроконтроллеровВ данной статье я расскажу, как я в течение пяти лет переводил предприятия, на которых работал, с ведения проектов под микроконтроллеры на C на C++ и что из этого вышло (спойлер: все плохо).
Читать полностью »
Hello, World! Глубокое погружение в Терминалы
2019-07-16 в 15:20, admin, рубрики: C, linux, pseudoterminal, terminal, Разработка под LinuxНа написание данной статьи меня вдохновила статья об анализе Сишного printf. Однако, там был пропущен момент о том, какой путь проходят данные после того, как они попадают в терминальное устройство. В данной статье я хочу исправить этот недочет и проанализировать путь данных в терминале. Также мы разберемся, чем отличается Terminal от Shell, что такое Pseudoterminal, как работают эмуляторы терминалов и многое другое.
Встраиваем Lua интерпретатор в проект для микроконтроллера (stm32)
2019-07-16 в 10:42, admin, рубрики: C, cmake, Lua, stm32, микроконтроллеры, отладка, программирование микроконтроллеров, системные вызовы
В достаточно крупных приложениях немалую часть проекта составляет бизнес-логика. Эту часть программы удобно отлаживать на компьютере, после чего встраивать в состав проекта для микроконтроллера, ожидая, что эта часть будет выполняться в точности так, как было задумано без какой-либо отладки (идеальный случай).
Так как большинство программ для микроконтроллеров пишется на С/C++, то для этих целей обычно используют абстрактные классы, предоставляющие интерфейсы к низкоуровневым сущностям (в случае, если проект пишется только с использованием C, то зачастую используются структуры указателей на функции). Данный подход предоставляет требуемый уровень абстракции над железом, однако чреват надобностью в постоянной повторной компиляции проекта с последующим программированием энергонезависимой памяти микроконтроллера бинарным файлом прошивки большого объема.
Однако есть и другой путь — использование скриптового языка, позволяющего производить отладку бизнес-логики в реальном времени на самом устройстве или загружать сценарии работы прямо с внешней памяти, не включая данного кода в состав прошивки микроконтроллера.
В качестве скриптового языка я выбрал Lua.Читать полностью »