В связи с тестированием сетевых блокировок в РФ на стороне нашего хостинг-провайдера наблюдаются проблемы с сетью. Сайт может работать нестабильно. Проблема известна, ожидаем восстановления маршрутов.
Всем добрый вечер! Почти неделю я была в месте, где нет интернета и связи. Не временный сбой, а просто там почти ничего не ловит. Иногда мобильный, не всегда. Вот такое интересное место.
Удивительно, но самые романтические встречи происходят именно в таких труднодоступных местах.
Еду домой на общественном транспорте, в Москве. Только что была в районе, где почти нет людей. И вдруг не понимаю, где я нахожусь. Маршрут вроде знакомый, но все вокруг говорят на незнакомом языке.
Как-то так получилось, что все мои знакомые и родные учили английский. С детства все английский. А я с детства немецкий. (Wer nicht arbeitet, soll auch nicht essen) или (Liebe auf den ersten Blick). Потом я тоже начала учить английский. Старалась, сдала соответствующий экзамен. Я продолжаю учить английский, чтобы лучше понимать окружающих. Хотя я и не переводчик, это помогает в общении.
Я еду в автобусе домой. Люди вокруг говорят на языке, который мне непонятен. Это точно не немецкий и не английский. Я не говорю по-французски и не говорю по-итальянски, но могу отличить их. Этот язык не похож ни на один из них.
Какой-то восточный язык, явно не европейский. В памяти всплыл турецкий сериал. Нет, они говорят не по-турецки. Вдруг мелькнула мысль: где я? Остановки знакомые, но люди в автобусе говорят на каком-то непонятном мне языке.
Похоже, не те иностранные языки мы учили? Надо было их язык выучить, а то непонятно, о чем они говорят. Может быть, что-то нехорошее. А вы как относитесь к иностранной речи в общественном транспорте?


Голову сделал а вот с заливкой проблема.
Q: Что такое VM5277? Это виртуальная машина? A: Нет, несмотря на название. VM5277 — это компилятор языка J8B (Java-подобный синтаксис) в нативный ассемблерный код для 8-битных микроконтроллеров. Никакой виртуальной машины на МК не выполняется — только нативный код. Название историческое и отражает архитектурную идею: для мощных устройств в будущем планируется легковесная JVM, для слабых — трансляция в ассемблер.
Q: Проект бесплатный? A: Да. Весь проект распространяется под лицензией Apache 2.0. Исходный код открыт и всегда будет открыт. Использование в коммерческих продуктах разрешено. Автор оставляет за собой право в будущем предлагать платные расширения (эксклюзивные платформы, специализированные драйверы, продвинутые оптимизации, улучшенное качество кода), но открытая кодовая база навсегда остаётся доступной для fork'а и самостоятельного развития сообществом.
Q: Проект разрабатывает один человек? Что будет, если вы забросите? A: Да, проект разрабатывается одним человеком. На текущий момент пройден путь от идеи до работающего компилятора, ассемблера, RTOS и инструментария — это около 1 года активной разработки. Объём проделанной работы и вложенного времени делают риск прекращения разработки крайне низким. Код открыт под Apache 2.0 — сообщество также сможет продолжить развитие. Даже в случае прекращения активной разработки вы получаете работающий компилятор и RTOS под открытой лицензией — это не облачный сервис, который могут отключить.
Q: На каких микроконтроллерах это работает прямо сейчас? A: Сейчас поддерживается AVR: ATmega168p, ATmega328p (Arduino Uno), Attiny2313a и другие. Добавление нового МК того же семейства — это, как правило, формирование конфигурационного файла по шаблону, а не переписывание кода. Поддержка PIC и STM8 архитектурно проработана, реализация запланирована на ближайшее будущее. При этом код на J8B пишется сразу с расчётом на кроссплатформенность — когда появится поддержка новых архитектур, ваша бизнес-логика не потребует переписывания.
Q: Чем J8B лучше Arduino C++? A:
Q: Чем J8B хуже Arduino C++?
По сути, главный недостаток сегодня — проект мало кому известен. С ростом сообщества эти проблемы уходят: больше тестирования — меньше багов, больше пользователей — больше библиотек и примеров.
Q: Какой размер прошивки получается? Не раздует ли ООП мой код? A: Компилятор генерирует оптимизированный ассемблерный код, близкий по эффективности к ручному. ООП-конструкции (классы, интерфейсы) разрешаются на этапе компиляции и не создают накладных расходов в рантайме — там, где нужны служебные данные (например, таблицы виртуальных методов для интерфейсов), они минимальны и включаются в сборку только если вы реально используете полиморфизм. Конкретные цифры: пример с enum и выводом — 1204 байта (3% памяти ATmega328p), пример с исключениями и трассировкой стека — 2389 байт (7.5%).
Q: Могу ли я использовать существующие Arduino-библиотеки? A: Нет — иначе это был бы клон или прослойка над Ардуино - это другой язык и другая экосистема. Но вы можете:
Q: Как отлаживать программу? Нужен ли дорогой программатор? A: Нет, достаточно USB-UART адаптера. Сейчас реализовано:
В разработке: полноценный отладчик верхнеуровневого языка.
Q: Какую IDE использовать? A: На текущем этапе достаточно любого текстового редактора — сборка запускается из командной строки одной командой. Также поддерживается сборка через Maven. Для тех, кто предпочитает IDE: доступен плагин для IntelliJ IDEA (приоритетное направление, бета-версия) и NetBeans (слабый приоритет, черновая версия) — с подсветкой синтаксиса, деревом проекта и запуском компиляции из IDE. В планах — LSP-сервер для поддержки VS Code, Kate и других редакторов.
Q: Что нужно для старта? A: Минимальный набор:
Q: Где взять примеры кода? A: В репозитории проекта в папке examples/j8b/: helloworld, gpio, исключения, enum и другие. Каждый пример содержит готовый pom.xml и собирается одной командой: mvn j8b:run -Parduino-uno Или напрямую из IDE через плагин. После сборки — сразу готовая прошивка.
Q: Почему вы написали свой компилятор, а не использовали LLVM/GCC? A: Задача VM5277 — не только компиляция, но и глубокая интеграция с собственной RTOS и системой исключений. Использование готового бэкенда не дало бы нужного уровня контроля над кодогенерацией и не позволило бы реализовать фичи вроде try-catch на устройствах с 2 КБ ОЗУ. Кроме того, одна из целей проекта — максимальная скорость сборки без тяжёлых зависимостей.
Q: На чём написан компилятор? A: Полностью на Java, без сторонних зависимостей. Собирается через Maven. Может работать как JAR (требуется JRE 8+) или как нативный исполняемый файл через GraalVM Native Image (JRE не требуется).
Q: Как устроен процесс компиляции? A: Исходный код J8B → парсинг (AST) → семантический анализ → промежуточное представление → генерация ассемблерного кода под целевую платформу → встроенный ассемблер → HEX-прошивка. Весь процесс — возможен одной командой, без внешних инструментов.
Q: Что такое J8B? Это подмножество Java? A: J8B — самостоятельный язык с Java-подобным синтаксисом, спроектированный специально для 8-битных МК. От Java отличается:
Q: Как устроена RTOS? A: RTOS написана на ассемблере для каждой платформы отдельно — это даёт полный контроль над размером кода и быстродействием критичных участков. Включает: динамическое выделение памяти, вытесняющую многозадачность, таймеры, блокировки, системные вызовы, драйверы ввода-вывода. Предоставляет высокоуровневый API для J8B (Thread, System, Math и т.д.).
Q: Как работают исключения при 2 КБ ОЗУ? A: Механизм исключений реализован на уровне компилятора и RTOS. Информация о типах исключений и обработчиках вычисляется на этапе компиляции. Stack trace собирается средствами RTOS в компактном бинарном виде, а в человекочитаемый формат (имена методов, номера строк) разворачивается уже на хосте — утилитой прошивальщика с использованием отладочной информации. Накладные расходы на МК минимальны: никакой виртуальной машины, никакого хранения имён методов в прошивке.
Q: Что с поддержкой прерываний? A: Низкоуровневые прерывания полностью под контролем RTOS. Пользователю не нужно лезть в ассемблер для типовых задач — всё уже обёрнуто в высокоуровневые конструкции языка и runtime-библиотеки: классы Thread, GPIO, Timer и другие. Тот же мигающий светодиод по таймеру — это несколько строк на J8B, без единой мысли о прерываниях.
Доступ к прерываниям опосредован — через API RTOS: таймеры, блокировки, ожидание событий. J8B — язык для бизнес-логики, весь hard realtime остаётся внутри RTOS. Единственный случай, когда может понадобиться ассемблер — вы пишете что-то узкоспециализированное, и тогда используете нативные методы.
Q: Как я могу помочь проекту? A: На текущем этапе наиболее ценная помощь:
Q: Когда будет поддержка PIC/STM8? A: Я планировал в Q2 2026, но сильно засел на багфиксинге и доработках проекта - скорее всего ближе к концу 2026 года. Архитектура компилятора и RTOS изначально спроектированы под мультиплатформенность, кодогенераторы для новых архитектур не требуют переписывания фронтенда, но есть более приоритетные задачи.
Q: Планируется ли поддержка 32-битных МК? A: Да, но не ранее STM8. Для слабых 32-битных устройств — нативная компиляция, для мощных — легковесная JVM. Это стратегическое направление развития, но приоритет сейчас — стабилизация и расширение на 8-битном сегменте.
Ссылки:
Сайт-визитка: https://vm5277.ru
GitHub: https://github.com/w5277c/vm5277
P.S. Ждите обновления проекта.
Позитив и грусть одновременно. В лучшем качестве не нашлось. Это нарезка из разных передач, но хорошая склейка, поэтому смотрится очень динамично.

Данное видео почему то не загружается с компьютера, постоянно сбой.
Поэтому просмотр напрямую с Ютуба.
В прошлом посте https://vombat.su/post/73536-novosti-o-moem-proekte-vm5277-razrabotka-po-dlya-8bit-mk я показал реализацию нативного метода для подсчета CRC8.
А вот пример бенчмарка на основе подсчёта CRC8

А вот результат работы:

Здесь мы видим, что было выполнено тысяча итераций подсчета CRC8 (SMBUS) для последовательности в 64 байта (байтовый массив). Общее время выполнения на ATmega328p на частоте 16МГц - 0.227 секунды, и 0.000227 секунды на одну итерацию.
Этот результат близок к максимально возможной скорости вычисления для ATmega328p на 16МГц для не табличных вычислений и сравним с ассемблерным аналогом. По сути, так и есть - потому что выполняется именно ассемблерный аналог. Однако для прикладного разработчика ничего не изменилось - его код как и ранее высокоуровневый, ему не нужно знать ничего об ассемблере или Си.
И да, ассемблерная функция вычисления CRC8 встроена в RTOS. На первый взгляд, это минус, ведь для каждой новой платформы нужно повторять набор всех ассемблерных функций. Но мой тулкит гибкий - можно реализовать вычисление CRC8 на J8B, а нативную реализацию из RTOS использовать там где она реализована. Таким образом к первым версиям RTOS других платформ не требуется реализация всего и вся - это просто доработка для повышения производительности.
Важно! Проект в состоянии альфа версии и я несколько месяцев не обновлял его на GitHub'е.
То, что вы там найдете - не будет соответствовать этому посту.
Прошу подождать, я планирую в течении недели выложить все свои доработки.
Ссылки:
Сайт-визитка: https://vm5277.ru
GitHub: https://github.com/w5277c/vm5277
P.S. Ждите обновления проекта.
На удивление справиться с тремя троллями получилось быстрее, чем думали. Но то, что они забрались так далеко, очень настораживает.
После битвы с тремя троллями оценили потери. В основном все целы, но нескольким людям сильно не повезло. Экандейо встревожен, что чудовища слишком организованы, обычно они одиночки. К тому же странный символ на груди одного их них свидетельство того, что некоторые из них больше не будут бояться огня, как раньше. Хамако про себя отметил, что символ явно оставлен клеймом.
Вернувшись в Ревланд, Ийанна первым делом нашла Регонгара и Октавию. Джубилоста она в последнее время слишком часто беспокоила вопросами, так что решила поменьше попадаться ему на глаза. У полуорка и полуэльфийки девушка попыталась узнать про символ, но безуспешно. Также излила душу Октавии, рассказав о поступке Зироу. Поток нелестных комментариев закончился тем, что Ийанна признала, как они с Тристианом идеально друг другу подходят, до тошноты правильные и скучные...С улыбкой добавила, что Тристиан хотя бы хорошо танцует.
Где-то в закутке Мен Ра пытался устраивать тараканьи бои, натравливая тараканов друг на друга. Он болел за одного из них, кидал монетки на собранное из веточек ристалище. Хамако нашел его за этим занятием и попросил рассказать подробнее о запретах его божества. Нехотя, но павиан отвлекся от своего весьма интересного занятия и посвятил барона в тонкости своей веры.
Барону и его товарищам на время пришлось отложить путешествия по округе, поскольку наступило время раздать поручения и выслушать просьбы, касающиеся развития земель. Сэр Гаррес, как и Экандейо, беспокоился из-за стычки с троллями, поэтому посоветовал нанять армию, что Хамако воспринял с энтузиазмом.
Ранее на протяжении месяца, каждый день, когда Ийанна была в Ревланде, она использовала свою магию, выращивая много цветущих деревьев. Спустя время стало заметно, что помимо деревьев тут и там появились ростки редких цветов, которых раньше не было. По словам сказителя это - благословение земли.
В один из дней Гаррес предупредил группу о посетителях. Одним из них был уже накомый Олег с поста, желавший обсудить статус его поста, и готов ли Хамако принять его в состав своих границ (не готов, так как людей всё ещё не хватает). Вторым же оказался аристократ из Пинтакса. В расшитом камзоле, с идеально уложенными волосами, представился как Стэфано Маскони, посол королевского величества из Пинтакса. Он возвращался из Рестова и решил потратить один день, чтобы навестить местные земли. Но он был очень разочарован состоянием окрестностей, так что поспешил выразить свои эмоции через пренебрежение и глумление, говоря, что, возможно, королю Ироветти следует завоевать их. Это будет куда милосерднее и гуманнее, чем ждать их потопления. Хамако пытался вежливо урегулировать данную ситуацию, объясняя, что требуется ещё немного времени на развитие, ведь эти земли принадлежат ему недавно. Но посол не унимался. С каждым предложением он становился всё грубее и беспардоннее. Ийанна не вмешивалась, хотя стояла позади Хамако красная, как рак. Зато вмешался Лебеда. Юноша намекнул, что места здесь дикие, и будет не очень хорошо, если на его повозку нападут тролли, а он сам никогда не увидит родных краев. Выражение лица посла стоило всех этих слов, мужчина поспешил убраться с глаз очень быстро. Хамако был немого недоволен таким решением, однако Ландер объяснил ему, что не стоит церемониться с такими нахалами. В будущем таких будет много, ему стоит научиться быть жестче.
В течение недели, помимо прямых обязанностей, Хамако общался с Джейтал на тему новых законов, со своей тетей на тему путешествий, ну и по мелочам с остальными спутниками. Также продолжил тренироваться с Каэсси. Во время одной из тренировок, девушка, обладая сильно огненным настроением (поскольку она кинетик и огня и воды, её настроение влияет на магию), весьма откровенно соблазнила Хамако. Ийанна была бы не Ийанной, если бы на следующее утро не заметила изменения в поведении брата. Юноша был более довольный и спокойный, чем обычно. Хамако, очень расплывчато ответив на вопросы, предпочел быстро закончить разговор и ретировался в сторону обеденного зала под ехидным взглядом сестры. Ийанне осталось только выяснить, кто же эта незнакомка.
Всем доброго дня. Вы, вероятно, видели людей, выглядящих не по паспортному возрасту. Кто-то кажется гораздо моложе, а кто-то старше. Это часто зависит от образа жизни и наследственности. Но в наше время все стремятся сохранить молодость.
В Древнем Египте старыми считали людей, у которых руки теряли силу, а сердце уставало. Основатель научной медицины Авиценна считал началом старости 40 лет. Древнегреческий врач Гиппократ считал началом старости 42 года, а после 63 лет начинается глубокая старость (по его мнению).
В Организации Объединенных Наций (ООН) принято человека в возрасте 60-74 лет считать пожилым, а с 75 — старым.
То есть существует соблазн сохранить молодость? А многие женщины готовы тратить деньги и здоровье лишь бы сберечь угасающую привлекательность. Даже не стоит упоминать о различных магических ритуалах и обрядах. Каждый решает это сам.
Наш знакомый недавно вернулся из командировки в Тибет, где посетил монастырь. Он совсем не монах, но его рассказ о жизни монахов был очень увлекательным. Особенно интересно, что они сохраняют крепкое здоровье и молодость до 80 лет и старше.
Как монахи достигают такого состояния? Они живут на природе, дышат чистым воздухом и много трудятся физически. Рано встают и рано ложатся спать. Летом их рацион легкий и нежирный, зимой можно позволить себе что-то более калорийное. В меню могут быть мясо и рыба, но в небольших количествах и нежирные.
Эти советы кажутся мне слишком обыденными. Возможно, у тибетских монахов есть свои особые методы, о которых они не распространяются.
Кто знаком с тибетским секретом вечной молодости, поделитесь.