Macro
* Sono basati su testo
* Vengono espansi dall'assemblatore prima che inizi il processo di assemblaggio
* Può essere utilizzato per definire costanti, etichette e istruzioni
* Non può essere utilizzato per creare strutture di controllo (come loop e rami)
Procedure
* Sono basati su binario
* Sono memorizzati nel file eseguibile
* Può essere chiamato da altre parti del programma
* Può essere utilizzato per creare strutture di controllo
In generale, le macro sono più efficienti delle procedure perché non richiedono istruzioni macchina aggiuntive. Tuttavia, può essere difficile eseguire il debug delle macro perché non sono visibili nel codice assembly. È più semplice eseguire il debug delle procedure poiché è possibile eseguirle passo dopo passo nel debugger.
Ecco un esempio di macro in linguaggio assembly:
```
.macro inc(r)
addi r, r, 1
.endm
```
Questa macro incrementa il valore nel registro "r". Viene utilizzato come segue:
```
incr1; Incrementa il valore in r1
```
Ecco un esempio di procedura in linguaggio assembly:
```
inc:
aggiungi r1, r1, #1; Incrementa il valore in r1
bxlr; Ritorno dalla procedura
```
Questa procedura incrementa il valore nel registro "r1" e poi ritorna al chiamante. Si chiama così:
```
bl inc; Chiama la procedura inc
```
hardware © www.354353.com