Есть ли способ преобразовать 16-битное приложение DOS в 32-битное?

есть ли способ преобразовать 16-битное приложение DOS в 32-битное приложение, чтобы я не был ограничен пределом 16383? Или, может быть, есть способ запустить 16-битное приложение в качестве 32-битного приложения без его преобразования?

У меня нет исходного кода программы, поэтому я не могу его перестроить.

спасибо

23
задан Daniel Wardin
08.12.2022 23:24 Количество просмотров материала 2952
Распечатать страницу

3 ответа

вы не можете преобразовать их. Только если у вас есть источник, вы можете перекомпилировать их как 32bit.

7
отвечен magicandre1981 2022-12-10 07:12

какие услуги, как Старые Добрые Игры сделать для того, чтобы сделать действительно старых игр (например, 16-битный Дос) работают на современных системах-это пакет для DOS и исполняемый виртуальной машиной вместе так, что игра думает, что он работает в DOS, а ВМ переводит все низком аппаратном уровне взаимодействие DOS игры делать в стандартное для Windows/Mac/Линукс операционная система команд.

вы можете сделать подобное для запуска устаревших приложений на современном оборудовании, заставляя новую ОС думать, что это запуск 32-битного приложения; но все старые ограничения 16-битной системы останутся.

5
отвечен Dan Neely 2022-12-10 09:29

Я предполагаю, что пределом 16383 вы имеете в виду максимальный целочисленный размер переменной, которую может обрабатывать 16-битное программное обеспечение (и это было так давно, что мне пришлось искать его). Нет никакого реального способа сделать это без изменения типа переменной - в этом случае короткие целые числа, длинные целые числа.

давайте предположим, что у нас есть волшебное программное обеспечение, которое позволяет нам запускать 16-битное программное обеспечение со всеми атрибутами 32 или 64-битной системы-вы сможете получить доступ к большему объему памяти, но это еще 16 бит, короткая целочисленная переменная. Вы также можете ускорить работу, запустив несколько экземпляров. Однако нельзя просто превратить короткое целое число в длинное целое, изменив архитектуру.

нет абсолютно никакого способа, без взлома исходного кода (ну почти), чтобы это исправить. Я думаю, если бы Вы были ниндзя 1337 dissassembling, вы могли бы запустить dissembler, выяснить, где эта переменная, и преобразовать ее в длинное целое число. Однако, на этом дело в том, что вам лучше разобраться в логике программного обеспечения и переписать его.

источники: документация заголовка C++

2
отвечен Journeyman Geek 2022-12-10 11:46

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх