Win32 Win64 Compile - Unterschied

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Win32 Win64 Compile - Unterschied

    Tag,

    es ist sehr wahrscheinlich eine nicht so dolle Frage, aber wieso heißt es Win64, Win32 Compile, wo man doch für den darunterliegenden Befehlssatz kompiliert?

    Erstelle ich nicht außerdem einen anderen Befehlssatz, wenn ich auf einem Itanium64 bit kompiliere ? Und wieso läuft das dann trotzdem auf anderen Architekturen?

    Vielleicht kann mir da der eine oder andere ja helfen, denn verstehe es nicht. Besonders die 2te Frage.
  • user_z0 schrieb:

    aber wieso heißt es Win64, Win32 Compile, wo man doch für den darunterliegenden Befehlssatz kompiliert?

    Wie soll man es denn sonst nennen? Win32 kompiliert halt für Windows mit dem 32bit x86 Befehlssatz, und Win64 für Windows mit dem x86-64 Befehlssatz. Die Angabe der Plattform ist schon wichtig, Windows binaries laufen nicht unter Linux und umgekehrt (zumindest nicht ohne weiteres).

    user_z0 schrieb:

    Erstelle ich nicht außerdem einen anderen Befehlssatz, wenn ich auf einem Itanium64 bit kompiliere ? Und wieso läuft das dann trotzdem auf anderen Architekturen?

    Ja, das ist ein völlig anderer Befehlssatz und die Binaries laufen dann nicht auf normalen x86er Prozessoren. Natürlich kann man auf ner Itanium Maschine Programme Cross-Compilieren, sodass sie den x86er Befehlssatz verwenden. Meines wissens können auch die Itaniums per Emulation x86-Code (allerdings sehr langsam) ausführen, sodass man es eventuell gar nicht merkt, wenn man "falsch" kompilierte Programme verwendet.
  • Ja ok, verstehe. Das es Win64/32 bit heißt, hängt glaube ich mit dem Loader zusammen und dem ganzen DLL gefuchtel.

    Zur zweiten Frage: also ich habe hier auf meinem Computer einen Dual Core 64 bit. Der versteht sicherlich x86, aber der hat doch auch noch weitere, bessere Befehle, so Zeugs wie, wie war das noch gleich, Very Long Instruction Word, etc. Wenn ich nun also mein Programm kompiliere, für welchen Befehlssastz wird das kompiliert. Nehmen wir an ich mache ein Win64 compile. Und was passiert wenn ich für win32 bit kompiliere, wird das dann pures x86 ?
  • Ah, ich denke du verwechselst da was. Wenn du zuhause nen 64Bit Rechner stehen hast ist das mit an Sicherheit grenzender Wahrscheinlichkeit kein Itanium. Die gibt es nur für Server und auch da haben sie sich nie wirklich durchgesetzt.

    Zum Verständnis: Wir reden hier von 3 verschiedenen Befehlssätzen:
    • [wikipedia]X86[/wikipedia] (Von Intel auch IA32 genannt): Der 32Bit Befehlssatz, der in der Vergangenheit bei den allermeisten Desktop und Laptop Prozessoren zum Einsatz kam. Wenn du für Win32 kompilierst kommt dieser Befehlssatz bei raus.
    • [wikipedia]IA-64[/wikipedia](Auch Intel Itanium Architecture genannt): Der Befehlssatz der Itanium Prozessoren. Nicht mit x86 kompatibel und eine reine 64Bit Architektur. Hat die von dir erwähnten Very Long Instruction Words, unterstützt Predication etc.
    • [wikipedia]x86-64[/wikipedia](Bekannt unter vielen namen: AMD64, Intel 64, x64): Die 64 Bit Erweiterung des x86 Befehlssatz. Da sämtliche alte x86er Befehle weiter unterstützt werden, sind die Prozessoren auf Hardware Ebene vollständig abwärtskompatibel zu 32bit und 16bit x86er Software (Das Betriebssystem kann da aber Probleme machen, 16 Bit Sofware läuft z.B. unter Windows x64 nicht).


    Wenn ich nun also mein Programm kompiliere, für welchen Befehlssastz wird das kompiliert.

    Hängt ganz vom Compiler ab. Ich benutze meistens GCC, der kompiliert, wenn man ihm nichts anderes sagt, für die Architektur unter der er läuft. Unter 64bit Windows oder Linux erstellt er x86-64 Code, bei 32bit Betriebssystem entsprechend x86.
  • user_z0 schrieb:

    Ja ok, verstehe. Das es Win64/32 bit heißt, hängt glaube ich mit dem Loader zusammen und dem ganzen DLL gefuchtel.

    Zur zweiten Frage: also ich habe hier auf meinem Computer einen Dual Core 64 bit. Der versteht sicherlich x86, aber der hat doch auch noch weitere, bessere Befehle, so Zeugs wie, wie war das noch gleich, Very Long Instruction Word, etc. Wenn ich nun also mein Programm kompiliere, für welchen Befehlssastz wird das kompiliert. Nehmen wir an ich mache ein Win64 compile. Und was passiert wenn ich für win32 bit kompiliere, wird das dann pures x86 ?


    Die Bitsysteme drücken u.A. die Kapazität der RAM aus, wenn ich mich nicht irre.

    Ich glaube, die 32 Bit Systeme haben RAM bis zu maximal 1 oder 2 GB, 64 Bit Systeme 3 - 4 GB+.

    Kann aber auch sein, dass ich mich irre :)
  • Baretta schrieb:

    user_z0 schrieb:

    Ja ok, verstehe. Das es Win64/32 bit heißt, hängt glaube ich mit dem Loader zusammen und dem ganzen DLL gefuchtel.

    Zur zweiten Frage: also ich habe hier auf meinem Computer einen Dual Core 64 bit. Der versteht sicherlich x86, aber der hat doch auch noch weitere, bessere Befehle, so Zeugs wie, wie war das noch gleich, Very Long Instruction Word, etc. Wenn ich nun also mein Programm kompiliere, für welchen Befehlssastz wird das kompiliert. Nehmen wir an ich mache ein Win64 compile. Und was passiert wenn ich für win32 bit kompiliere, wird das dann pures x86 ?


    Die Bitsysteme drücken u.A. die Kapazität der RAM aus, wenn ich mich nicht irre.

    Ich glaube, die 32 Bit Systeme haben RAM bis zu maximal 1 oder 2 GB, 64 Bit Systeme 3 - 4 GB+.

    Kann aber auch sein, dass ich mich irre :)


    . Bei 32Bit Versionen sind aber max 4 GB möglich. Bei 64Bit vieeeel mehr.

    [wikipedia]http://de.wikipedia.org/wiki/4-GiB-Grenze[/wikipedia]