Trei coduri de adresă
În informatică, codul cu trei adrese (prescurtat în TAC sau 3AC) este o formă de reprezentare a codului intermediar utilizat de compilatori . Fiecare instrucțiune din 3AC poate fi descrisă de cvadruplul ( operator , operand1 , operand2 , rezultat ) care reprezintă operația
unde x ( rezultat ), y ( operand1 ) și z ( operand2 ) sunt variabile (temporare sau nu) și operanzii pot fi, de asemenea, constante. Simbolul indică un operator generic (de exemplu un operator aritmetic).
Expresii care conțin mai multe operații fundamentale, cum ar fi
acestea nu pot fi reprezentate în 3AC ca o singură instrucțiune, ci trebuie împărțite într-o serie echivalentă de operații fundamentale:
Termenul Trei coduri de adresă este, de asemenea, utilizat atunci când unele operații utilizează mai mult (sau mai puțin) decât doi operanzi. Caracteristica principală a 3AC este de fapt că fiecare instrucțiune implementează exact o operație fundamentală.
O versiune mai rafinată a 3AC este dată de formularul static unic de atribuire (SSA).
Exemplu
int main (nul) { int i; int b [10]; pentru (i = 0; i <10; ++ i) { b [i] = i * i; } }
Exemplul anterior din C , tradus în trei coduri de adresă, ar avea aproximativ următoarea formă:
i: = 0; misiune L1: dacă i <10 merg L2; salt conditionat du-te L3; salt necondiționat L2: t0: = i * i t1: = & b; adresa operațiunii t2: = t1 + i; t2 conține adresa lui b [i] * t2: = t0; economisind prin dereferențierea indicatorului i: = i + 1 du-te L1 L3: