Meditiere vor meinem 6502 Source zu „Rock“ – meiner ganz persöhnlichen „Boulder Dash“ Engine –
Interessant wieviel Code- Müll sich aus „unüberlegter“ Programmierung ergibt. Soviel zum Thema schmutziger Code. Schaut mal da:
Sprung mittels BNE ausführen, wenn der Inhalt der Speicherzelle X nicht Null ist:
- Schlechtes Beispiel
LDA X
CMP #0
BNE LABEL - Besser
LDA X
BNE LABEL
„CMP #0“ braucht kein Mensch, wenn „BNE“ sowieso immer dann ausgeführt wird, wenn das Zero Flag nicht gesetzt ist. Wird der Akkumulator mit Null geladen, dann wird das Zero- Flag gesetzt. Wird der Akkumulator mit einem Wert ungleich 0 geladen, dann wird das Zero- Flag nicht gesetzt und es wird zu „LABEL“ verzweigt.
Das Beispiel oben, lässt sich 1:1 auf die Prüfung „ist gleich 0“ übertragen. Ganz nach dem Motto:
- LDA X
CMP #0
BEQ LABEL
Das „CMP #0“ braucht hier auch niemand…… Armes „CMP #0“.
Denn: Wird der Akkumulator mit 0 geladen, dann wird das Zero- Flag gesetzt und BEQ wird ausgeführt, wenn genau das der Fall ist.
So, nun aber weiter, muss meinen Source aufräumen 🙂
23. September 2012 at 5:32 pm
„Soviel zum Thema schmutziger Code. “ 😀
23. September 2012 at 5:46 pm
Tja, das Thema hat mich nicht losgelassen und da ich sowieso meinen Source entrümpeln wollte….. Schon wieder etwas gelernt 🙂