Win32 Win64 Compile - Unterschied

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • 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 wrote:

    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 wrote:

    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.
  • Also 64 Bit Programme werden auf nem Win32 System nicht laufen. Auch wenn der Prozessor das theoretisch könnte, kann ein 32Bit Betriebssystem damit nicht umgehen.

    Allgemein ist es von der Performance her kein großes Problem 32Bit x86 Software auf x86_64 Hardware laufen lassen, der Performance verlust im Vergleich zu x64 Software ist im allgemeinen gering.
  • user_z0 wrote:

    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 wrote:

    user_z0 wrote:

    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]