Assembler Infos



  • Original erstellt von kingruedi:
    Wenn man ein Programm komplett in Assembler verfasst, kann man wahrscheinlich doch noch ein bisschen besser optimieren, als die Compiler.

    Ich würds gerade andersrum behaupten 😃 Im normalen Programmfluss kann man nicht mehr viel mit Assembler reißen, wenn dann an hot-spots im Code, keline Prozeduren oder passagen



  • Ich denke, dass man durch eine komplette sich auf das Programm die Sachen doch besser optimieren kann. Zum Beispiel könnte man den Stack besser ausnutzen oder so



  • Hi,

    nun ja, wenn mal den MAschinencode, den VC++ erzeugt disassembelt, kommt man zu dem Schluss, dass es mit der Optimierung nicht weit her ist. 😉

    Manitu 🕶



  • ich kann es mir schlecht vorstellen das ein compiler im grossen stil von dem ganzen SIMD zeug profitieren kann weil da werden ja mehrere daten simultan verarbeitet... aber beispielsweise kennt c++ keine möglichkeit dem compiler mitzutielen das sich da etwas simultan ausführen lässt...
    bsp:

    char zeugs[8];
    for(int n=0;n<8;n++)
       zeugs[n]=zeugs[n]>=15;
    

    dieser code liesse sich extrem stark per mmx optimieren.

    char zeugs[8];
    for(int n=1;n<8;n++)
       zeugs[n]=zeugs[n-1]>=15;
    

    dieser hier überhaupt nicht....
    ich glaube kaum das compiler sowas gut erkennen können... dazu müssten sie ja den code extrem ausführlich mehrfach "betrachten".



  • SOviel wie ich gehört habe optimiert der INtel COmpiler am besten. Da kommmt man nicht mehr ran!!!

    Dafür ist der auch ein bisschen teurer (ich glaube 40'000€)



  • SOviel wie ich gehört habe optimiert der INtel COmpiler am besten. Da kommmt man nicht mehr ran!!!

    Dafür ist der auch ein bisschen teurer (ich glaube 40'000€)



  • SOviel wie ich gehört habe optimiert der INtel COmpiler am besten. Da kommmt man nicht mehr ran!!!

    Dafür ist der auch ein bisschen teurer (ich glaube 40'000€)



  • einmal hätte gereicht 😃 und für linux ist er frei verfügbar wenn man damit opensource baut...



  • @Japro:
    nochmal zurueck zu den Beiden Codeschnippseln, die Du da gepostet hast: Wie kann man da mit MMX grossartig was optimieren? Ist mir bis jetzt leider noch kein Licht aufgegangen 🙄
    (mal ganz abgesehen davon, dass ich die Zeile in der for-Schleife eh nicht ganz verstehe 😃 )

    [ Dieser Beitrag wurde am 12.08.2002 um 00:22 Uhr von Nobuo T editiert. ]



  • der code ansich macht keinen sinn 😃 aber der gadanke ist der folgende: bei der ersten variante wird der in der regel die forschleife so durchlaufen wie sie dasteht und dann jedem feld false(0) zuweisen wenn sein werte kleiner als 15 ist und sonst true(1+).
    aber in diesem fall könnte er auch gleich alle 8 bytes auf einmal in einse der xmm register laden und mit einem der mmx vergeliche gelichzeitig verarbeiten...
    im zweiten fall geht das nicht mehr weil das ergebnis vom vorigen byte abhängig ist und sie deshalb hintereinander verarbeitet werden müssen.
    das sind nur beispiele. weil mir gerade nix gescheiteres eingefallen ist.


Anmelden zum Antworten