Makros und Prozeduren sind beide Möglichkeiten, wiederverwendbaren Code in Assemblersprache zu erstellen. Es gibt jedoch einige wesentliche Unterschiede zwischen den beiden.
Makros
* Sind textbasiert
* Werden vom Monteur erweitert, bevor der Montageprozess beginnt
* Kann zum Definieren von Konstanten, Beschriftungen und Anweisungen verwendet werden
* Kann nicht zum Erstellen von Kontrollstrukturen (z. B. Schleifen und Verzweigungen) verwendet werden.
Verfahren
* Sind binärbasiert
* Werden in der ausführbaren Datei gespeichert
* Kann von anderen Programmteilen aus aufgerufen werden
* Kann zur Erstellung von Kontrollstrukturen verwendet werden
Im Allgemeinen sind Makros effizienter als Prozeduren, da sie keine zusätzlichen Maschinenanweisungen erfordern. Das Debuggen von Makros kann jedoch schwierig sein, da sie im Assemblercode nicht sichtbar sind. Prozeduren sind einfacher zu debuggen, da sie im Debugger schrittweise durchlaufen werden können.
Hier ist ein Beispiel für ein Makro in Assemblersprache:
„
.macro inc(r)
addi r, r, 1
.endm
„
Dieses Makro erhöht den Wert im Register „r“. Es wird wie folgt verwendet:
„
inc r1; Erhöhen Sie den Wert in r1
„
Hier ist ein Beispiel für eine Prozedur in Assemblersprache:
„
inkl.:
füge r1, r1, #1 hinzu; Erhöhen Sie den Wert in r1
bx lr; Rückkehr vom Eingriff
„
Diese Prozedur erhöht den Wert im Register „r1“ und kehrt dann zum Aufrufer zurück. Es heißt wie folgt:
„
bl inc; Rufen Sie die Inc-Prozedur auf
„