Nein das ist nicht möglich. Der Grund dafür ist ziemlich breit, für SuperUser vielleicht sogar zu breit, da Sie die Grundlagen erläutern müssten, wie x86 und x64 erstellt wurden und wie sich dies auf die Programmierung im Allgemeinen auswirkt.
Um es kurz zu erklären, kommt es darauf an:
In der Vergangenheit hatten wir 16-Bit-Prozessoren. Dann machte Intel den ersten 32-Bit-Prozessor, auch bekannt als x86. Dies ist der 8086, 80286 (kurz 286) usw. Dies war im Wesentlichen eine Modifikation der 16-Bit-Prozessoren mit zusätzlichen Befehlssätzen. Mit jeder neuen Version ihrer Prozessorserie fügte Intel der Prozessorfamilie weitere Befehlssätze hinzu, was dazu führte, dass der Befehlssatz viele Anweisungen enthielt. Intel konnte alte Befehlssätze nicht einfach entfernen, da dies keine Rückwärtskompatibilität zur Folge hätte, und Intel wollte ältere Prozessoren weiterhin unterstützen.
Da der Prozessor 32 Bit hat, gibt es eine obere Grenze, nämlich die höchste 32-Bit-Zahl. Dies bedeutet, dass die Speicherzuordnung nur bis zu 3,5 GB beträgt.
Früher waren Computer nicht so leistungsfähig. Wenn Intel also von Anfang an 64 Bit anstrebte, würde dies bedeuten, dass viel mehr Zeit für die Berechnung der gleichen Zahlen aufgewendet wurde. Die Leistung würde sich dadurch verschlechtern, da die zu berechnenden Zahlen größer sind.
Außerdem haben 32-Bit-Prozessoren lange Zeit gut funktioniert.
Irgendwann trat AMD auf den Markt und führte den 64-Bit-Prozessor ein. AMD erstellte ihre eigenen Befehlssätze, um das Arbeiten mit 64 Bits zu ermöglichen, während die Intel-Befehlssätze für 32 Bits im Takt gehalten werden, um eine Abwärtskompatibilität mit 32 Bits zu ermöglichen.
Da es sich tatsächlich um unterschiedliche Befehlssätze handelt, ruft ein Programmierer, der 32-Bit-Programme erstellt, andere Routinen auf als beim Erstellen von 64-Bit-Programmen.
Nun, da ich erkläre, warum dies schwierig ist, lasst uns das Problem weiterhin aus Programmiersicht erklären.
Wenn Sie ein Programm codieren, schreiben Sie zuerst Ihren Code. Wenn Ihr Code für 32-Bit-Programme abwärtskompatibel ist, können Sie weder 64-Bit-Nummern verwenden noch mehr als 3,5 GB Speicher gleichzeitig adressieren. Grundsätzlich können Sie keine Grenzen überschreiten, denen 32-Bit-Programme ausgesetzt sind, oder Ihr Programm stürzt ab.
Da Sie jetzt über Code verfügen, können Sie Ihr Programm tatsächlich ausführen. Damit andere Personen Ihr Programm ausführen können, müssen Sie den Code in eine ausführbare Datei kompilieren. Dies bedeutet, dass der einfach zu lesende Code in Anweisungen umgewandelt wird, die der Prozessor versteht. Während des Kompilierens geben Sie an, ob Ihr Programm unter x86 oder x64 ausgeführt werden soll, und der Compiler generiert Code unter Verwendung der auf dieser Prozessorarchitektur basierenden Befehlssätze.
Wie Sie sehen, können Sie eine ausführbare Datei nicht einfach ändern und für eine andere ausführbare Datei verwenden. Sie müssen das Programm zunächst in Code dekompilieren und dann mit anderen Anweisungen erneut kompilieren.
Vorausgesetzt, dass ein für x86 kompiliertes Programm nativ auf x64 funktioniert, kann man davon ausgehen, dass ein Programmierer ein x64-Programm erstellt, da er die Grenzen der x86-Architektur überschreiten wird. Selbst wenn Sie aus der x64-Version eine x86-Version machen möchten, ist das Programm wahrscheinlich instabil, da Sie die Einschränkungen der Möglichkeiten eines 32-Bit-Programms aufheben.