Разработчик создал эмулятор процессора x86 на чистом CSS — без единой строчки JavaScript

Обложка: Разработчик создал эмулятор процессора x86 на чистом CSS — без единой строчки JavaScript

Lyra Rebane создал(а) x86CSS — полноценный эмулятор процессора архитектуры x86 на чистом CSS. Никакого JavaScript или WebAssembly — все вычисления происходят исключительно силами браузерного движка стилей.

Как это работает

Эмулятор исполняет реальный машинный код для процессоров Intel 8086. Тактовый генератор построен на CSS-анимациях в сочетании со style container queries, поэтому система работает автономно и не требует от пользователя никакого взаимодействия — программа крутится сама.

Логика реализована благодаря новым возможностям CSS, которые пока доступны только в экспериментальном виде:

  • условные операторы if()
  • style queries (стилевые запросы контейнера)
  • кастомные @function

На странице проекта есть скрипт-тег, но он лишь ускоряет работу тактового генератора. Если отключить JavaScript, эмулятор продолжит работать — просто чуть медленнее и менее стабильно.

Запуск собственных программ

В эмуляторе можно запускать собственные программы. Достаточно написать код на C и скомпилировать его через gcc-ia16 с помощью скрипта из репозитория автора. На выходе — готовый HTML-файл со стилями, внутри которого исполняется ваш бинарник.

Репозиторий x86CSS на GitHub
Репозиторий проекта на GitHub — 726 звёзд, лицензия GPL-3.0

По умолчанию эмулятору доступно 1,5 КБ памяти, но этот лимит можно увеличить в конфигурации. Программа загружается по адресу 0x100, предусмотрены специальные адреса ввода-вывода для взаимодействия с «железом» — экранным выводом и клавиатурой.

Ограничения и совместимость

Практического применения у проекта нет — производительность крайне низкая. Зато это отличная демонстрация того, что современный CSS действительно стал тьюринг-полным.

Из-за использования экспериментальных CSS-функций запустить демку пока можно только в браузерах на базе Chromium (Chrome, Edge, Opera и т.д.). Firefox и Safari пока не поддерживают нужные спецификации, хотя все используемые фичи входят в официальный стандарт CSS.

Отдельно автор подчёркивает: проект создан полностью вручную, без использования ИИ. CSS написан в Sublime Text, а для генерации повторяющихся частей кода использовался Python-скрипт.

Попробовать эмулятор можно на сайте проекта, исходный код доступен на GitHub под лицензией GPL-3.0.