Die Null, im Vergleich

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 🙂

Advertisements

2 responses to “Die Null, im Vergleich

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: