Tre adressekoder

I informatikk , tre-adresse kode ( TAC eller 3AC ) er en type mellomspråket som brukes av kompilatorer som klang - LLVM . Hver TAC-instruksjon har maksimalt tre operander og er vanligvis en kombinasjon av oppgave og en binær operatør. For eksempel t1: = t2 + t3. Navnet stammer fra bruken av tre operander i denne instruksjonen, selv om instruksjoner med færre operander kan forekomme.

Siden treadressekoden brukes som et mellomspråk i kompilatorer, er det lite sannsynlig at operandene er konkrete minneadresser eller prosessorregister , men heller symbolske adresser som vil bli oversatt til ekte adresser når de tildeles . Det er heller ikke uvanlig at operandnavnene nummereres sekvensielt, da treadressekoden vanligvis genereres av kompilatoren.

Eksempler

I tre adressekoder vil dette bli delt inn i flere separate instruksjoner. Disse instruksjonene blir lettere oversatt til monteringsspråk. Det er også lettere å oppdage vanlige underuttrykk for å forkorte koden. I det følgende eksemplet består en beregning av flere mindre:

# Beregning av en løsning av en [[kvadratisk ligning]]. x = (-b + sqrt (b ^ 2-4 * a * c)) / (2 * a) t1: = b * b t2: = 4 * a t3: = t2 * c t4: = t1 - t3 t5: = sqrt (t4) t6: = 0 - b t7: = t5 + t6 t8: = 2 * a t9: = t7 / t8 x: = t9

De tre adressekodene kan ha betingede og ubetingede hopp og minnetilgangsmetoder. Det kan også ha metoder for å ringe funksjoner. På denne måten kan de tre adressekodene være nyttige i kontrollflytanalyse. I det følgende type C-eksemplet lagrer en sløyfe kvadratene med tall mellom 0 og 9:

... for (i = 0; i < 10; ++i) { b[i] = i*i; } ... t1: = 0; Initialisering av i L1: hvis t1> = 10 til L2; Betinget hopp t2: = t1 * t1; Beregning av kvadratet til i t3: = t1 * 4; Adressedefinisjon t4: = b + t3; Adresse å lagre i kvadrat * t4: = t2; Informasjonslagring via pekeren t1: = t1 + 1; Inkrement i til L1; Gjentatt løkke L2:

Se også

Merknader og referanser

  1. Aho, Alfred V. (Sethi, Ravi., Ullman, Jeffrey D., 1942-), kompilatorer, prinsipper, teknikker og verktøy , Reading, Mass., Addison-Wesley Pub. Co,1986, 466  s. ( ISBN  0201100886 , OCLC  12285707 , les online )