Я полагаю, что было бы возможно создать небольшое программное обеспечение, которое имитирует необходимые вещи, необходимые 16-битному приложению. Кто-нибудь знает такое решение?
На самом деле это не тривиально. Процессор x86 в режиме amd64 не только получает много функциональных возможностей (двойные регистры, двойные регистры MMX, 64-битный адресный режим, ...), но также теряет доступ к некоторым устаревшим опциям. Он может без проблем запускать 32-битные приложения, но больше нет способа запускать 16-битные приложения. Таким образом, вам действительно нужно эмулировать старый процессор. Эмуляция относительно медленная и не совсем тривиальная.
Обычное решение этого - поместить все это в виртуальную машину, например, на питание от qEMu, которая может эмулировать другие процессоры.
Предложения, которые я нашел в Интернете, включают запуск 16-битного приложения на виртуальной машине, но запуск целой ОС только для запуска небольшого приложения кажется излишним.
Это несколько излишне. Правильным решением будет либо перекомпилировать приложение и запустить его как 64-битный исполняемый файл (часто тривиально, если приложение написано хорошо и использует такие вещи, как size_t, а не просто предполагать, что все никогда не изменится). Это требует от вас доступа к исходному коду, что не всегда так.
Обходные пути будут:
- Держите старую систему DOS/ Windows 2/3/ 3.11 (пожалуйста, Б-г НЕТ)
- запустить его внутри виртуальной машины.
- Эмулируйте старую машину через WINE.
Первое решение не рекомендуется. Вы застряли бы на старой ОС, например на Windows 7 32bit (не используйте более старую ОС, у которой больше нет обновлений). Не использовать XP , если не будет переключаться ОС до того 8 - го апреля 2014 года. Или используйте выделенный хост без доступа к сети, все порты USB приклеены и т.д. Это имеет очевидную обратную сторону ухудшения юзабилити.
Работать в ВМ это здорово. Это работает, это может быть изолированным. Это легко сделать резервную копию, и вы можете перенести виртуальную машину на новую машину, когда это необходимо. Проверка будущего - это хорошо.
Очевидным недостатком является запуск виртуальной машины, но ее часть может быть автоматизирована (например, автоматически загружать ее при включении компьютера). Свяжите выключение виртуальной машины с выключением Windows и т.д. И т.д.
Эмуляция также будет работать, и обычно она будет медленнее. (большинство исключений, где эмуляция происходит быстрее, включали WINE, Linux и игры, в которых вызов OpenGL был намного быстрее в Linux, что приводило к неожиданному увеличению скорости на 40% для некоторых игр). Тем не менее, медленнее это неплохо, учитывая, что старое приложение, вероятно, работало на частоте 166 МГц 286 (16-битная эра), а теперь на современном ядре с несколькими гигагерцами. Даже если он замедлится на 99%, он все равно будет быстрее.
Тем не менее, для простоты обслуживания и проверки на будущее: приобретите виртуальную машину с win7-32 битами и запустите ваше приложение на этом.