Комментарии 8
Мне кажется, как раз режим
QEMU может эмулировать не только компьютер целиком, но и процессор для отдельного пользовательского процесса в хостовом ядре
и будет наиболее полезным для WebAssembly режима. Мне сложно вообразить необходимость запуска полноценной ОСи из браузера =) А вот отдельное приложение — может кому и пригодится.
Возможно. К счастью, TCG более-менее общий и там, и там. Правда, 64-битные гостевые системы у меня пока не поддерживаются.
С другой стороны, если от приложения есть исходники, то возможно, его проще будет пересобрать Emscripten-ом нативно. Да и как его в браузер запихивать, со всеми-то зависимостями… В общем, тут с ходу не скажешь. С ОС такого не получится. Хотя, если в дополнение к слою syscalls дописать в Emscripten слой hypercalls и тривиальное паравиртуализованное оборудование… :)
"тяп-ляп программирование" => exploratory programming.
«Говорю же, чисто поржать» А если серьёзно — то изначально это было "на слабо" — написать JIT, который будет переделывать машинный код в JS (а QEMU в силу наличия режима не-аппаратной виртуализации для этого чудесно подходил). Ну а потом уже какие-то use case-ы начали вырисовываться.
Это виртуальная машина, работающая в браузере. Потенциально, более быстрая, чем аналоги, и уж вряд ли кто с нуля напишет для такого количества гостевых архитектур. В ней можно, например, демонстрировать однодискетные ОС прямо на сайте. Или прошивки для встраиваемых устройств.
Привет! Спасибо за классную статью. А ты смотрел, что Фабрис Беллард сам делает с QEMU? Имею в виду проект JS Linux: https://bellard.org/jslinux/
Смотря что понимать под "смотрел" :) Само существование JSLinux меня и сподвигло сделать "такое же, но с JIT". В первой части как раз был небольшой обзор существовавших ранее эмуляторов и известных мне попыток портировать QEMU.
Детально в JSLinux я не углублялся. Насколько я помню, там была задумка, наоборот, используя все возможности JS реализовать эффективный эмулятор практически с нуля. Я же не хотел разбираться со всеми деталями x86 (не говоря уже о десятке других архитектур), а сосредоточиться на JIT.
QEMU.js: теперь по-серьёзному и с WASM