Nächste Seite: Daten als ASSEMBLE-Code Aufwärts: Der M2Amiga-Assembler Vorherige Seite: Die Register-Benutzung im Assembler

##
Optimierungen im Assembler

Der Assembler selbst führt nur zwei Arten von Optimierungen durch:

- Die Adressierungsart `d16(Ax`)`` bzw. `(d16,Ax`)`` wird in `(Ax`)`` umgewandelt, wenn d`16`=0 ist. Man kann also durchaus der Klarheit halber

        MOVE.L Node.succ(A0),A1

  schreiben, statt

        MOVE.L (A0),A1

  Ersteres ist ausserdem auch noch gültig, wenn die `RECORD`-Struktur der Variablen `Node` mal geändert werden sollte.
- Die Adressierungsart absolut lang wird in absolut kurz umgewandelt, wenn die Adresse nicht mehr als 16 Bit beansprucht. Dies wird auf dem Amiga nur die Adresse 4 (execBase) betreffen.

Zusätzlich führt der Compiler am Schluss -- wie auch für den -Code -- eine Sprung- und ,,Deadcode``-Optimierung durch, wenn die entsprechende Compiler-Option eingeschaltet ist (2.4.3, Seite ). Sämtliche vom Assembler generierten PC-relativen Referenzen werden an den globalen Optimierer gemeldet. Dies ist im allgemeinen zu begrüssen, da z.B. `BRA` wo immer möglich in `BRA.S` optimiert und ,,toter``2.25 Code entfernt wird.