Обычно, когда вы запускаете DOS-программы в среде Windows, вы используете эмулятор DOS. Однако это медленное и жаркое решение с множеством ограничений. Идея меня поразила; не было бы более эффективным для CPU просто перевести/адаптировать машинный код, предназначенный для запуска в DOS, чтобы он работал в Windows? Есть ли какие-либо инструменты для выполнения этой работы, насколько вам известно?Есть ли инструменты для перевода машинного кода DOS в среду Windows?
Было бы возможно создать exe-файлы, которые могут работать как в DOS, так и в Windows. Это возможно благодаря тому, что все exe-файлы Windows из PE-формата содержат начальный DOS-заголовок, за которым следует DOS-код, который инструктирует компьютер показывать сообщение об ошибке, если файл запущен в DOS. Затем после DOS-кода следуют другие PE-заголовки, а затем код, совместимый с Windows. Можно было бы заменить DOS-код, отображающий сообщение об ошибке с реальным кодом из DOS-программы, а затем в коде, совместимом с Windows, который следует после PE-заголовков, вы можете разместить переводчик, который переводит DOS- кода, а затем передает ему выполнение.
Обратный, хотя и более сложный, также был бы возможен. Вы просто берете программу Windows и заменяете отображающий код dos-кодом кодом, который преобразует/адаптирует совместимый с Windows код в DOS-среду, а затем передает на него выполнение.
статический и динамический бинарный перевод не является чем-то новым, был вокруг на протяжении десятилетий. найти хороший для любой конкретной среды источника и назначения, ну, это еще одна история.вы можете так же легко запустить его на виртуальной машине, где инструкции, которые процессор может запускать изначально и адресное пространство, принадлежащее программе, когда он выходит из своего адресного пространства, тогда виртуальная машина берет на себя и имитирует эту транзакцию, нет отличным от запуска Windows или Linux или другого на виртуальной машине. здесь снова найти хороший с желаемым хозяином и гостем, другая история –