Frage zum Compiler



  • Hallo,

    wie ist es, wenn ich z. B. einen c++ Compiler für Windows habe.
    Läuft der Maschinencode auf jedem x86 Prozessor? Oder wird noch der Compiler für
    andere Prozessoren angepasst? Weil wenn man einen I7 mit einen P3 vergleicht, gab es viele Befehlserweiterungen.

    mfg tori



  • Ich glaube so richtig ausreizen kannst du das nur, wenn du den Compiler von Intel nutzt. Da kannst du, wenn ich mich richtig erinnere, genauer spezifizieren was dein Target ist. Ganz grob kannst du es aber auch in den Visual Studios tun. Erwarte da aber bitte keine Abstufungen zwischen Intel bzw AMD Prozessoren sondern nur Architekturen wie ARM usw.

    Was z.B. ein MS Compiler tut weiß ich im Detail leider nicht.



  • tori1117 schrieb:

    Hallo,

    wie ist es, wenn ich z. B. einen c++ Compiler für Windows habe.
    Läuft der Maschinencode auf jedem x86 Prozessor? Oder wird noch der Compiler für
    andere Prozessoren angepasst? Weil wenn man einen I7 mit einen P3 vergleicht, gab es viele Befehlserweiterungen.

    mfg tori

    x86 definiert einen Befehlssatz.
    Klar gibts Erweiterungen, aber wenn der Compiler die kleinste gemeinsame Schnittmenge an Befehlen verwendet, dann läuft der Code auf jedem x86.
    Man kann bei den Compilern angeben, ob man Erweiterungen verwenden möchte. Dann wird eben Code erzeugt, der auch diese Erweiterungen verwendet. Der ist dann nicht mehr mit jedem x86 kompatibel.



  • Es gib verschiedene Compileroptionen. Einige davon sagen ihm, dass der Code für einen bestimmten Prozessor optimiert werden soll. Einige Optionen verwenden Features, welche den Code für andere Prozessoren inkompatibel machen und einige, die es eben nicht tun. Im zweiten Fall ist er auf anderen Prozessoren lauffähig, aber eben nicht für diesen optimiert.

    Die prozessorspezifischen Optimierungen müssen dabei nicht dem aktuellen Prozessor entsprechen. Prinzipiell lässt sich sogar Code erzeugen, welcher auf dem zum compilieren verwendeten Prozessor gar nicht lauffähig ist. Das passiert sogar zwangsweise, wenn ich ein Crosscompile mache, also beispielsweise auf einer x86-Maschine Programme für ARM compiliere.



  • Vielen Dank für die Antworten.


Anmelden zum Antworten