Byte vs. Integer in Schleifen.
Hi Sebastian,
es bringt absolut keine Vorteile eine Byte-Schleifen-Variable gegenüber einer Integer-SV zu nutzen. Der Kompiler hat u.U. sogar mehr Arbeit. Simple Erklärung.
Der Kompiler übersetzt Schleifenvariablen in ein bis zwei Register (je nach dem, ob diese innerhalb der Schleife genutzt werden). Der Schleifenregister wird auf die Differenz zwischen Anfang und Ende der Schleife gesetzt und in das 32-Bit (Integer) Register ECX geschrieben. Dieses wird solange heruntergezählt, bis es 0 ist. Das zweite Register (i.a.
DL, DX, oder EDX) wird von Anfangswert solange heraufgezählt, bis die Schleife beendet wurde.
Wie auch immer, ECX ist der Zähler, und dieser ist vom Typ Integer. Wenn ein Byte in ein 32-Bit Register geladen wird, so muss dieses vorher
gelöscht werden, das ist auf modernen Rechnern eine Extraaufwand von 2 Taktzyklen.
Abschluss
Wenn Du die Routine in einer rechenintensiven Umgebung nutzt, dann nutze immer Integervariablen. Wenn die Routine "nur mal so" genutzt wird, dann empfehle ich das zu nutzen, was Dir während der Entwicklung Vorteile bringt.
...
...