Здравствуйте, меня зовут Евгений, и мне надоело писать прошивки для микроконтроллеров. Как это это случилось и что с этим делать, давайте разберемся.
Рубрика «C» - 40
Как перестать писать прошивки для микроконтроллеров и начать жить. Часть I
2018-12-20 в 7:46, admin, рубрики: C, c++, dbi, IoT, openocd, pintool, stm32, valgrind, виртуализация, микроконтроллеры, программирование микроконтроллеров, Разработка для интернета вещей, С++Как Clang компилирует функцию
2018-12-19 в 3:36, admin, рубрики: C, c++, clang, LLVM, Компиляторы, компиляция, ПрограммированиеЯ планировал написать статью о том, как LLVM оптимизирует функцию, но сначала необходимо написать, как Clang транслирует C или C++ в LLVM.
Профилирование кода с LLVM
2018-12-17 в 3:03, admin, рубрики: C, c++, LLVM, open source, КомпиляторыПроклятие недетерминизма
Моя первая попытка написать проход LLVM — люблю эти сегфолты
Недавно я столкнулся с интересной задачей — мне понадобился детерминированный и кросплатформенный способ определения времени выполнения кода С++. Под словом «детерминированный» я подразумеваю, что один и тот же код будет выполняться за одно и то же количество единиц времени. Под кроссплатформенностью я понимаю, что один и тот же код под Windows и под Ubuntu будет выполняться за одно и то же количество единиц времени.
Естественно, измерение времени на CPU не удовлетворяет этим условиям. Машинный код меняется в зависимости от архитектуры и операционной системы, и один и тот же код займёт различное количество времени при выполнении. Даже на одной и той же машине, такие факторы, как промахи кэша, будут играть большую роль — достаточную для того, чтобы исказить результаты измерения времени выполнения одного и того же кода. Мне нужно было что-либо более умное…
Читать полностью »
Виртуальная память в ARMv7
2018-12-13 в 14:58, admin, рубрики: ARMv7, C, MMU, virtual memory, Программирование, системное программированиеЗдравствуйте!
В статье обзорно описана система виртуальной памяти архитектуры ARMv7.
Иголка в стоге сессий, или Байт-код регулярных выражений
2018-12-13 в 13:01, admin, рубрики: C, c++, байт-код, Блог компании Badoo, виртуальная машина, интерпретаторы, Компиляторы, Программирование, Регулярные выражения17 млрд событий, 60 млн пользовательских сессий и огромное количество виртуальных свиданий происходят в Badoo ежедневно. Каждое событие аккуратно сохраняется в реляционные базы данных для последующего анализа на SQL и не только.
Современные распределённые транзакционные базы данных с десятками терабайт данных — настоящее чудо инженерной мысли. Но SQL как воплощение реляционной алгебры в большинстве стандартных реализаций пока не позволяет формулировать сложные запросы в терминах упорядоченных последовательностей кортежей.
В последней статье из серии, посвящённой виртуальным машинам, я расскажу про альтернативный подход к поиску интересных сессий — движок регулярных выражений («Поросячий Матчер»), определённых для последовательностей событий.
Виртуальная машина, байт-код и компилятор прилагаются бесплатно!
Кратчайшее введение в создание компилятора
2018-12-12 в 19:50, admin, рубрики: C, python, Алгоритмы, КомпиляторыЗдесь я попытался показать на практике, что собой представляют некоторые важные концепции из области создания компиляторов. Есть вероятность, что подобные 15-минутные завершенные истории могут оказаться неплохим способом погружения в сложные темы. Только хорошо бы не пассивно читать то, что представлено ниже, а еще и проверять код в работе.
Если первый опыт окажется успешным, то в будущем вас могут ожидать и другие 15-минутные "зарисовки" по тематике компиляторов.
Сбалансированное слияние сверху-вниз и снизу-вверх
2018-12-10 в 10:14, admin, рубрики: C, edisonsoftware, Алгоритмы, Блог компании Edison, параллельное программирование, Программирование, сортировки
В прошлой статье мы ознакомились с реликтовыми сортировками слияния (вызывающих прежде всего исторический интерес). А что в тренде сегодня?Читать полностью »
У Интернета могут быть серьёзные проблемы из-за языков, подобных C и C++, которые способствуют появлению уязвимостей
2018-12-08 в 18:47, admin, рубрики: C, c++, перевод статьи, С++Привет! Представляю вашему вниманию перевод статьи "Internet aurait de sérieux problèmes à cause de langages comme C et C++ favorisant la survenue de failles" (фр. язык).
Но мало кого из разработчиков это волнует
Один баг затрагивает iPhone, другой – Windows, а третий – сервера, работающие на Linux. На первый взгляд эти баги не имеют ничего общего, так как касаются разных платформ: Android, iOS, macOS, Windows, Linux. Однако, на самом деле, всё иначе, по мнению Алекса Гейнора, инженера по безопасности программного обеспечения в Mozilla, ранее работавшего в USDS (United States Digital Service).
Во время третьего «Weakest Link», ежегодного мероприятия, организованного Motherboard Vice,
на тему компьютерного взлома и кибербезопасности в будущем, Алекс Гейнор поднял серьезную проблему, которая, по его мнению, может угрожать Интернету, но, как ни парадоксально, оставляет разработчиков совершенно равнодушными.
Гейнор объяснил, что три ранее упомянутые ошибки существуют, потому что программное обеспечение, которое они затрагивают на разных платформах, было написано с помощью языков программирования, имеющих неприятную тенденцию способствовать возникновению ошибок типа «memory unsafety», разрешая доступ к невыделенным областям памяти.
Эта категория ошибок может привести к багам и уязвимостям безопасности во время получения доступа к памяти.
Читать полностью »
Полное руководство по CMake. Часть вторая: Система сборки
2018-12-04 в 18:46, admin, рубрики: C, c++, cmake, автоматизация рутины, для начинающих, компиляция, руководство для новичков, руководство для разработчика, руководство для чайников, системы сборкиВведение
В данной статье рассмотрено использование системы сборки CMake, применяемой в колоссальном количестве проектов на C/C++. Строго рекомендуется прочитать первую часть руководства во избежание непонимания синтаксиса языка CMake, явным образом фигурирующего на протяжении всей статьи.