Three address code
# Three address code

In informatica il Three Address Code (abbreviato in TAC o 3AC) è una forma di rappresentazione del codice intermedio utilizzata dai compilatori. Ogni istruzione nel 3AC può essere descritta dalla quadrupla (operatore, operando1, operando2, risultato) che rappresenta l'operazione

$x:=y\,\operatorname {op} \,z$

dove x (risultato), y (operando1) e z (operando2) sono variabili (temporanee o meno) e gli operandi possono anche essere delle costanti. Il simbolo $\operatorname {op}$ indica un generico operatore (ad esempio un operatore aritmetico).

Le espressioni che contengono più di un'operazione fondamentale, come

$p:=x+y\times z$

non sono rappresentabili in 3AC come singola istruzione, ma vanno scomposte in una serie equivalente di operazioni fondamentali:

$t_{1}:=y\times z$

$p:=x+t_{1}$

Il termine Three Address Code viene utilizzato anche quando alcune operazioni utilizzano più (o meno) di due operandi. La caratteristica principale del 3AC è infatti che ogni istruzione implementa esattamente un'operazione fondamentale.

Una versione più raffinata del 3AC è data dallo static single assignment form (SSA).

## Esempio

Il precedente esempio in C, tradotto in Three Address Code, avrebbe indicativamente la forma seguente:

