Loop Befehl vs. dec-jnz-Kombination



  • Hallo,

    ich habe mal folgendes ausprobiert:
    Programm a:

    xorl %ecx, %ecx
    xorl %eax, %eax
    decl %ecx
    decl %eax
    0:
    decl %eax
    loop 0b
    

    und Programm b:

    xorl %ecx, %ecx
    xorl %eax, %eax
    decl %ecx
    decl %eax
    0:
    decl %eax
    decl %ecx
    jnz 0b
    

    Und es scheint, dass auf meinem Athlon XP 2200 Programm a etwa 10 Sekunden und Programm b nur 5 Sekunden benötigt.
    Die beiden Programme machen im Grunde genommen das Gleiche.
    Nur scheinbar benötigt der loop-Befehl mehr (doppelt so viel) Zeit.
    War nur überrascht von dem Ergebnis und wollte es hier loswerden...;)
    Oder habe ich einen Fehler gemacht und ziehe falsche Schlussfolgerungen?


  • Mod

    das hat seine richtigkeit. loop teilt das schicksal einiger anderer instruktionen wie etwa enter/leave, dass es (auf heutigen prozessoren) langsamer ist als gleichwertige kombinationen einfacherer befehle.


Anmelden zum Antworten