Macro's en procedures zijn beide manieren om herbruikbare code in assembleertaal te maken. Er zijn echter enkele belangrijke verschillen tussen de twee.
Macro's
* Zijn op tekst gebaseerd
* Worden door de assembleur uitgebouwd voordat het assemblageproces begint
* Kan worden gebruikt om constanten, labels en instructies te definiëren
* Kan niet worden gebruikt om controlestructuren te creëren (zoals loops en vertakkingen)
Procedures
* Zijn binair gebaseerd
* Worden opgeslagen in het uitvoerbare bestand
* Kan vanuit andere delen van het programma worden opgeroepen
* Kan worden gebruikt om controlestructuren te creëren
Over het algemeen zijn macro's efficiënter dan procedures, omdat er geen aanvullende machine-instructies voor nodig zijn. Macro's kunnen echter moeilijk te debuggen zijn, omdat ze niet zichtbaar zijn in de assemblagecode. Procedures zijn gemakkelijker te debuggen omdat ze in de debugger kunnen worden doorlopen.
Hier is een voorbeeld van een macro in assembleertaal:
```
.macro inc(r)
addi r, r, 1
.endm
```
Deze macro verhoogt de waarde in het register `r`. Het wordt als volgt gebruikt:
```
inclusief r1; Verhoog de waarde in r1
```
Hier is een voorbeeld van een procedure in assembleertaal:
```
inclusief:
voeg r1, r1, #1 toe; Verhoog de waarde in r1
bx lr; Terug van de procedure
```
Deze procedure verhoogt de waarde in het register `r1` en keert vervolgens terug naar de beller. Het wordt als volgt genoemd:
```
bl inc; Bel de Incassoprocedure
``` |