Gibt es eine Möglichkeit, eine 16-Bit-DOS-App in eine 32-Bit-Version zu konvertieren?

6377
Daniel Wardin

Gibt es eine Möglichkeit, eine 16-Bit-DOS-App in eine 32-Bit-App zu konvertieren, damit ich mich nicht an das 16383-Limit halte? Oder gibt es eine Möglichkeit, eine 16-Bit-App als 32-Bit-App auszuführen, ohne sie zu konvertieren?

Ich habe nicht den Quellcode für das Programm und kann ihn daher in keiner Weise neu erstellen.

Vielen Dank

2

3 Antworten auf die Frage

7
magicandre1981

Sie können sie nicht konvertieren. Nur wenn Sie Source haben, können Sie sie als 32Bit neu kompilieren.

Danke, ich dachte, das wäre der Fall, wollte aber sichergehen Daniel Wardin vor 11 Jahren 0
In diesem Fall würde das Rekompilieren höchstwahrscheinlich das Umcodieren - Anpassen von API-Aufrufen und -Kennungen usw. - erfordern. Es geht also nicht nur um größere Variablen M.Bennett vor 11 Jahren 3
Die Frage war nicht so klar, aber während das Rekompilieren die einzige Möglichkeit wäre, dies zu tun, geht es hier nicht nur um die Architektur, sondern um die Variablentypen. Auch wenn er es neu kompiliert hat, ist es immer noch eine 'kurze' Ganzzahl, im Gegensatz zu einer Standard- oder einer langen Ganzzahl. Journeyman Geek vor 11 Jahren 1
5
Dan Neely

What services like Good Old Games do in order to make really old games (ex 16 bit dos) work on modern systems is to package the dos executable and a virtual machine together so that the game thinks it's running in DOS while the VM translates all the low level hardware interaction that DOS games do into standard Windows/Mac/Linux operating system commands.

You can do similar to run legacy applications on modern hardware, making the new OS think it's running a 32bit application; but all the old 16bit system limitations will remain.

DosBox ist ein gutes Programm, das diesen Bedarf erfüllt. Damit können Sie 16-Bit-Spiele auf einem modernen 64-Bit-System ausführen. Scott Chamberlain vor 11 Jahren 2
2
Journeyman Geek

I'm assuming by the 16383 limit, you mean the maximum integer size of a variable that a 16 bit software can handle (and its been so long since I did this that I had to look it up). There's no real way to do this without changing the variable type - in this case short integers to long integers.

Lets assume we have a magical software that lets us run a 16 bit software with all the attributes of a 32 or 64 bit system - you'd be able to access more memory, but this is still a 16 bit, short integer variable. You could also speed things up by running multiple instances. One doesn't simply turn a short integer into a long integer by changing the architecture however.

There is absolutely no way, without hacking at the source code (well nearly) to fix this. I guess, if you were a 1337 dissassembling ninja, you might be able to run a dissembler, work out where this variable is and convert it to a long integer. However, at this point you're better off working out what the logic of the software is, and rewriting it.

Sources: C++ header documentation