Ich habe schon einige 6502 Betriebssysteme (8296, 8032, C64, VC20, Microprofessor II, Apple II) disassembliert und dabei noch einiges an Optimierungspotential gefunden.
Deshalb würde ich gern in einem Thread mit Euch über Otimierungen und Tricks diskutieren.
Ein kleines Beispiel: Am Schleifenende wird ein 16 bit Zähler dekrementiert, um die Schleife n mal durchlaufen zu lassen.
Der Counter selbst wird in der Schleife nicht benutzt.
Der konventionell Ansatz sieht so aus:
Wenn der Zähler selbst nicht benötigt wird, kann man einen "jagged countdown" benutzen, der nicht die Werte von n bis 0 in der korrekten Reihenfolge durchläuft, aber trotzdem n Iterationen (n > 0 und n < 32768) erlaubt:
Auch diese Schleife wird n mal durchlaufen, sie ist aber kürzer und schneller.
Dieser "jagged countdown" lässt sich einsetzen, wenn der Indexwert selbst nicht benutzt wird. Er durchläuft z.B. bei n=515 die Werte:
515, 514, 513, 256, 511, 510, ... 258, 257, 0, 255, 254, ... 2, 1, -256 (deshalb auch die letzte Abfrage BPL und nicht BNE).