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?
-
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.