Switch



  • Hallo,

    Wieso wird denn für den zu überprüfenden unsigned int Wert des switch-cases, dieser unsigned int Wert extra in ein Register, und dann nochmal im RAM gespeichert?:
    unsigned int i = 3;

    switch(i)...

    mov eax,dword ptr[i]
    mov dword ptr [ebp-0F0h],eax  
    cmp dword ptr [ebp-0F0h],3
    

    Wieso kann nicht direkt cmp auf dword ptr[i] angewendet werden?



  • Optimierungs-Optionen des compilers benutzen!



  • Kannst du das bitte etwas erläutern?



  • Sowas müsste man sich in Zeiten von Registerrenaming, Sprungvorhersagen, Interlockauflösung und Hyperthreading usw. mit allem Pipapo eigentlich mal genauer im Zusammenhang angucken, inklusive Profiler. Ein kleiner Ausschnitt ohne jeden Zusammenhang ist hier nicht sonderlich hilfreich.
    Ansonsten sind C-Typ-Compiler dumm wie Brot, das müsste man doch wissen, darum muss man ja als C-Programmierer Assembler können 😉


Anmelden zum Antworten