Разработчик создал эмулятор процессора x86 на чистом CSS — без единой строчки JavaScript
Новости TprogerLyra Rebane создал(а) x86CSS — полноценный эмулятор процессора архитектуры x86 на чистом CSS. Никакого JavaScript или WebAssembly — все вычисления происходят исключительно силами браузерного движка стилей.
Как это работает
Эмулятор исполняет реальный машинный код для процессоров Intel 8086. Тактовый генератор построен на CSS-анимациях в сочетании со style container queries, поэтому система работает автономно и не требует от пользователя никакого взаимодействия — программа крутится сама.
Логика реализована благодаря новым возможностям CSS, которые пока доступны только в экспериментальном виде:
- условные операторы if()
- style queries (стилевые запросы контейнера)
- кастомные @function
На странице проекта есть скрипт-тег, но он лишь ускоряет работу тактового генератора. Если отключить JavaScript, эмулятор продолжит работать — просто чуть медленнее и менее стабильно.
Запуск собственных программ
В эмуляторе можно запускать собственные программы. Достаточно написать код на C и скомпилировать его через gcc-ia16 с помощью скрипта из репозитория автора. На выходе — готовый HTML-файл со стилями, внутри которого исполняется ваш бинарник.
По умолчанию эмулятору доступно 1,5 КБ памяти, но этот лимит можно увеличить в конфигурации. Программа загружается по адресу 0x100, предусмотрены специальные адреса ввода-вывода для взаимодействия с «железом» — экранным выводом и клавиатурой.
Ограничения и совместимость
Практического применения у проекта нет — производительность крайне низкая. Зато это отличная демонстрация того, что современный CSS действительно стал тьюринг-полным.
Из-за использования экспериментальных CSS-функций запустить демку пока можно только в браузерах на базе Chromium (Chrome, Edge, Opera и т.д.). Firefox и Safari пока не поддерживают нужные спецификации, хотя все используемые фичи входят в официальный стандарт CSS.
Отдельно автор подчёркивает: проект создан полностью вручную, без использования ИИ. CSS написан в Sublime Text, а для генерации повторяющихся частей кода использовался Python-скрипт.
Попробовать эмулятор можно на сайте проекта, исходный код доступен на GitHub под лицензией GPL-3.0.