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
conversion
32-bit
ms-dos
simulation
16-bit
Daniel Wardin
quelle
quelle
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.
quelle
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
quelle