32-битная Windows 7 и более ранние версии включают / включают NTVDM по умолчанию. На 32-битном Win8 + вы можете включить его в Windows Features .
В 64-битной Windows (или любой другой 64-битной ОС) вам необходим эмулятор или полная виртуализация.
Ядро в длинном режиме не может использовать режим vm86 для обеспечения виртуальной среды реального режима 8086. Это ограничение архитектуры AMD64 / x86-64.
При работающем 64-битном ядре единственный способ для вашего центрального процессора работать в 16-битном режиме - это 16-битный защищенный режим (да, это существует; нет, никто не использует его, и AFAIK основные операционные системы не предоставляют способ его использования). Или для ядра, чтобы переключить процессор из длинного режима обратно в унаследованный режим, но 64-битные ядра этого не делают.
Но на самом деле, при аппаратной виртуализации (VirtualBox, Hyper-V или любой другой, использующий Intel VT-x или AMD SVM), 64-разрядное ядро может быть гипервизором для всей виртуальной машины , будь то Виртуальная машина работает в 16-битном реальном режиме или работает на 32-битной ОС (например, Windows 98 или 2000), которая, в свою очередь, может использовать режим vm86 для запуска 16-битных исполняемых файлов реального режима.
Особенно в 64-битном ядре, обычно проще просто полностью эмулировать 16-битный ПК (как это делает DOSBOX) , вместо того, чтобы использовать виртуализацию HW для естественного выполнения обычных инструкций, но перехватывать прямой аппаратный доступ (in
/ out
, загрузка / сохранение в памяти VGA и т. Д.) И int
инструкции, которые делают системные вызовы DOS / вызовы BIOS / что угодно.