Несколько лет назад Фабрис Беллар [написал jslinux][1] — эмулятор ПК, написанный на JavaScript. После этого был ещё как минимум [Virtual x86][2]. Но все они, насколько мне известно, являлись интерпретаторами, в то время как написанный значительно раньше тем же Фабрисом Белларом Qemu, да и, наверное, любой уважающий себя современный эмулятор, использует JIT-компиляцию гостевого кода в код хостовой системы. Мне показалось, что самое время реализовать обратную задачу по отношению к той, которую решают браузеры: JIT-компиляцию машинного кода в JavaScript, для чего логичнее всего виделось портировать Qemu. Казалось бы, почему именно Qemu, есть же более простые и user-friendly эмуляторы — тот же VirtualBox, например — поставил и работает. Но у Qemu есть несколько интересных особенностей
* открытые исходники
* возможность работать без драйвера ядра
* возможность работать в режиме интерпретатора
* поддержка большого количества как хостовых, так и гостевых архитектур
На счёт третьего пункта теперь-то я уже могу пояснить, что на самом деле в режиме TCI интерпретируются не сами гостевые машинные инструкции, а полученный из них байткод, но сути это не меняет — чтобы собрать и запустить Qemu на новой архитектуре, если повезёт, достаточно компилятора C — написание кодогенератора можно отложить.
И вот, после двух лет неспешного ковыряния в свободное время исходников Qemu появился работающий прототип, в котором уже можно запустить, например, Kolibri OS.
[Читать дальше →][3]
[1]:
https://habrahabr.ru/post/119424/
[2]:
https://habrahabr.ru/post/198192/
[3]:
https://habrahabr.ru/post/315770/?utm_source=habrahabr&utm_medium=rss&utm_campaign=feed_posts#habracut