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


2

Gibt es eine Möglichkeit, eine 16-Bit-DOS-App in eine 32-Bit-App zu konvertieren, sodass ich nicht an die 16383-Grenze gebunden bin? Oder gibt es eine Möglichkeit, eine 16-Bit-App als 32-Bit-App auszuführen, ohne sie zu konvertieren?

Ich habe keinen Quellcode für das Programm, kann es also in keiner Weise neu erstellen.

Vielen Dank

Antworten:


7

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


danke, ich dachte, das wäre der Fall, wollte aber sicherstellen
Daniel Wardin

3
In diesem Fall würde das Neukompilieren höchstwahrscheinlich das Neukodieren beinhalten - Anpassen von API-Aufrufen und -Handles usw. - es geht also nicht nur darum, größere Variablen zu haben
M.Bennett

1
Die Frage war darüber nicht so klar, aber während das Neukompilieren der einzige Weg wäre, dies zu tun, ist das Problem hier nicht nur die Architektur, sondern deren Variablentypen. Selbst wenn er es neu kompiliert hat, ist es immer noch eine "kurze" Ganzzahl im Gegensatz zu einer Standard-Ganzzahl oder einer langen Ganzzahl.
Geselle Geek

5

Was Dienste wie Good Old Games tun, um wirklich alte Spiele (ex 16-Bit-DOS) auf modernen Systemen zum Laufen zu bringen, ist, das DOS-Programm und eine virtuelle Maschine so zu packen, dass das Spiel denkt, es läuft unter DOS, während die VM das gesamte Programm übersetzt Hardware-Interaktion auf niedriger Ebene, die DOS-Spiele mit Standardbefehlen für Windows / Mac / Linux-Betriebssysteme ausführen.

Sie können auf ähnliche Weise veraltete Anwendungen auf moderner Hardware ausführen, sodass das neue Betriebssystem den Eindruck erweckt, dass es sich um eine 32-Bit-Anwendung handelt. Alle alten 16-Bit-Systemeinschränkungen bleiben jedoch erhalten.


2
DosBox ist ein gutes Programm, das diese Anforderungen erfüllt. Damit können Sie 16-Bit-Spiele auf einem modernen 64-Bit-System ausführen.
Scott Chamberlain

2

Ich gehe davon aus, dass Sie mit der 16383-Grenze die maximale Ganzzahlgröße einer Variablen meinen, die eine 16-Bit-Software verarbeiten kann (und das ist so lange her, dass ich sie nachschlagen musste). Es gibt keine echte Möglichkeit, dies zu tun, ohne den Variablentyp zu ändern - in diesem Fall kurze Ganzzahlen zu langen Ganzzahlen.

Nehmen wir an, wir haben eine magische Software, mit der wir eine 16-Bit-Software mit allen Attributen eines 32- oder 64-Bit-Systems ausführen können - Sie könnten auf mehr Speicher zugreifen, aber dies ist immer noch eine 16-Bit-Variable mit kurzen Ganzzahlen. Sie können die Arbeit auch beschleunigen, indem Sie mehrere Instanzen ausführen. Man wandelt jedoch nicht einfach eine kurze Ganzzahl in eine lange Ganzzahl um, indem man die Architektur ändert.

Es gibt absolut keine Möglichkeit, ohne den Quellcode (fast) zu hacken, um dies zu beheben. Ich denke, wenn Sie ein 1337er Ninja wären, könnten Sie vielleicht einen Dissembler ausführen, herausfinden, wo sich diese Variable befindet, und sie in eine lange Ganzzahl konvertieren. An diesem Punkt sollten Sie jedoch besser herausfinden, wie die Logik der Software aussieht, und sie neu schreiben.

Quellen: C ++ - Headerdokumentation

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.