Tříadresní kód
Tříadresní kód (často označovaný jako tříadresný kód nebo tříadresový kód) označuje v informatice formu mezijazyka, používanou překladačem jako pomůcku pro optimalizaci kódu. Každý příkaz v tříadresním kódu je zapsán pomocí uspořádané čtveřice: operátor, operand1, operand2 a výsledek.
Zápis
Každý výrok pak má obecný zápis:
jako například:
kde x, y a z jsou proměnné, konstanty nebo dočasné proměnné generované překladačem. Symbol op představuje libovolný operátor, například aritmetický součet.
Výrazy, které obsahují více než jednu klíčovou operaci, například:
nejsou reprezentované v tříadresním kódu jako jeden příkaz. Místo toho se rozloží na ekvivalentní řadu příkazů jako například:
Pojem tříadresní kód se používá i tehdy, kdy některé příkazy obsahují více (nebo naopak méně) než dva operandy. Klíčová vlastnost tříadresního kódu je, že každý příkaz obsahuje právě jednu operaci, a že zdroj i cíl se vztahují k jakémukoliv dostupnému registru.
Zdokonalením tříadresního kódu je tzv. SSA forma.
Příklad
int main(void)
{
int i;
int b[10];
for (i = 0; i < 10; ++i) {
b[i] = i*i;
}
}
Výše uvedený program jazyka C, přeložený do tříadresního kódu, by mohl vypadat následovně:
i := 0 ; přiřazení
L1: if i >= 10 goto L2 ; podmíněný skok
t0 := i*i
t1 := &b ; adresa operace
t2 := t1 + i ; přiřazení hodnoty t2 k adrese b[i]
*t2 := t0 ; uložení operace prostřednictvím ukazatele
i := i + 1
goto L1
L2:
Reference
V tomto článku byl použit překlad textu z článku Three_address_code na anglické Wikipedii.