Trei coduri de adresă

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Î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: