Я был вдохновлен воплощением x86 виртуальной машины в Javascript, и я хотел бы попробовать написать простейший возможная виртуальная машина, способная запускать ядро Linux. Это чисто воспитательная работа, без каких-либо целей, кроме понимания и обмена кодом, который делает это возможным.
Оглядываясь на спецификацию x86, я подозреваю, что я могу броситься в глубокий конец, пытаясь написать виртуальную машину, которая способен эмулировать полный набор команд x86. Вместо этого я ищу более простую архитектуру, которую я могу попытаться подражать.
Я прочитал этот вопрос, в котором спрашивается, как эмулировать архитектуру x86, и ответ предлагает начать с чего-то более простого, такого как архитектура ARM. Мой вопрос более конкретный: какая самая простая архитектура, которую я могу попытаться эмулировать, которая сможет запускать ядро Linux?
Мне интересно полностью эмулировать всю машину, а не просто передавать инструкции обратно на главный компьютер (что, например, было бы возможно, если бы я писал эмулятор x86). У меня есть достаточное количество 16-битных знаний сборки и некоторые теории теории операционных систем, поэтому это должно быть в пределах досягаемости с достаточной работой.