codice a tre indirizzi - Three-address code

In informatica , codice a tre indirizzi (spesso abbreviato TAC o 3 AC) è un codice intermedio utilizzato per ottimizzare compilatori per aiutare nella realizzazione di trasformazioni di codice-miglioramento . Ogni istruzione TAC ha al massimo tre operandi ed è tipicamente una combinazione di assegnazione e un operatore binario. Ad esempio, t1 := t2 + t3. Il nome deriva dall'uso di tre operandi in queste dichiarazioni, anche se possono verificarsi istruzioni con un minor numero di operandi.

Poiché codice a tre indirizzo viene utilizzato come lingua intermedia all'interno compilatori, gli operandi molto probabilmente non essere indirizzi concreti memoria o registri del processore , ma piuttosto indirizzi simbolici che si tradurranno in indirizzi reali in fase di allocazione dei registri . Inoltre non è raro che i nomi degli operandi sono numerate in sequenza dal codice a tre indirizzi viene tipicamente generata dal compilatore.

Un perfezionamento di codice a tre indirizzi è A-normale forma (ANF).

Esempi

Nel codice a tre indirizzi, questo sarebbe suddiviso in diverse istruzioni separate. Queste istruzioni si traducono più facilmente al linguaggio assembly . E 'anche più facile da rilevare comuni sottoespressioni per accorciare il codice. Nel seguente esempio, un calcolo è composto di parecchi più piccoli:

Codice a tre indirizzi può avere salti e modalità di accesso della memoria condizionati ed incondizionati. Si può anche avere i metodi di funzioni di chiamata, oppure può ridurre questi per salti. In questo modo, codice a tre indirizzi può essere utile in analisi di controllo del flusso . Nel seguente esempio C-like, un loop memorizza i quadrati dei numeri compresi tra 0 e 9:

Guarda anche

Riferimenti

  1. ^ V., Aho, Alfred (1986). Compilatori, principi, tecniche e strumenti . Sethi, Ravi., Ullman, Jeffrey D., 1942-. Reading, Mass .: Addison-Wesley Pub. Co. p. 466. ISBN  0.201.100,886 mila . OCLC  12.285.707 .