Un’istruzione macro nella programmazione del computer è una singola istruzione che, quando viene compilato un programma, viene sostituita da un blocco di codice predefinito. Il termine era originariamente applicato alle istruzioni utilizzate nella programmazione in linguaggio assembly, in cui a volte era necessario codice lungo e ripetitivo per operazioni molto semplici. Lo sviluppo di istruzioni macro è stato uno dei primi passi verso la creazione di un linguaggio basato su una libreria di funzioni rappresentative in modo che le azioni minime potessero essere raccolte insieme in un’unica chiamata di comando in un programma separato. Le prime librerie di istruzioni macro venivano fornite più frequentemente dai produttori di hardware e software per aiutare i programmatori a utilizzare e accedere alle funzionalità nel modo corretto.
I programmatori utilizzavano le istruzioni macro per una serie di motivi, ma il più comune era ridurre la quantità di codice ripetitivo nel programma, eliminare la possibilità di errore all’interno del codice macro e fornire set di istruzioni comunemente usati in modo che diversi programmatori potessero utilizzare il stessa istruzione macro. In linguaggio assembly, ogni singolo passaggio necessario per ottenere un determinato risultato deve essere scritto esplicitamente. Un esempio potrebbe essere un programma che ha aggiunto tre numeri insieme.
L’operatore di addizione nei linguaggi di livello superiore è spesso dato per scontato, ma l’operazione di aggiunta di tre numeri in linguaggio assembly richiede almeno sei righe di codice separate. Le prime due righe caricano i numeri in campi chiamati registri che in realtà corrispondono a circuiti fisici all’interno del computer. La terza riga aggiunge i due registri e una quarta riga memorizza il risultato in un altro registro. La quinta riga carica l’ultimo numero da aggiungere in un registro e l’istruzione finale aggiunge il risultato precedente al terzo numero.
Questa sequenza di operazioni può essere facilmente trasformata in un’istruzione macro, quindi è necessaria solo una riga di codice, insieme ai tre numeri da aggiungere come parametri. Quando il programma viene infine compilato da un assemblatore e trasformato in codice macchina, vengono eseguite azioni chiamate pre-elaborazione prima che venga eseguito l’assembly. Il preprocessore prende l’istruzione e i parametri della macro e li espande nelle righe di codice richieste, sostituendo i parametri per i segnaposto rappresentativi all’interno del codice macro effettivo.
Dopo che l’uso delle istruzioni macro si è diffuso, molti blocchi di codice comunemente usati sarebbero stati assemblati in librerie di istruzioni macro. Queste librerie contenevano diverse macro per semplificare la programmazione in linguaggio assembly e per garantire che determinate operazioni fossero eseguite in modo coerente tra programmi diversi. L’uso estensivo di librerie di istruzioni macro alla fine ha portato a linguaggi di livello superiore che si affidavano alle proprie librerie per fornire funzionalità estese con requisiti di programmazione molto meno ripetitivi.