código de três endereços - Three-address code

Em informática , o código de três endereços (muitas vezes abreviado para TAC ou 3AC) é um código intermediário usado por optimização compiladores para ajudar na aplicação de transformações de melhoramento de código . Cada instrução TAC tem no máximo três operandos e é tipicamente uma combinação de atribuição e um operador binário. Por exemplo, t1 := t2 + t3. O nome deriva do uso de três operandos nestas declarações, embora instruções com menos operandos podem ocorrer.

Desde código de três endereços é usado como língua intermediária dentro de compiladores, os operandos provavelmente não vai ser endereços concretas de memória ou registradores do processador , mas endereços em vez simbólicos que serão traduzidos em endereços reais durante a alocação de registradores . Também não é incomum que os nomes operando são numerados sequencialmente desde código de três endereços é normalmente gerado pelo compilador.

Um refinamento do código de três endereços é A-forma normal (ANF).

Exemplos

No código de três endereços, este seria dividido em várias instruções separadas. Estas instruções traduzir mais facilmente a linguagem assembly . É também mais fácil de detectar sub-expressões comuns para encurtar o código. No exemplo a seguir, um cálculo é composto por vários pequenos:

Código de três endereços podem ter saltos e métodos de acesso de memória condicionais e incondicionais. Ele também pode ter métodos de funções de chamada, ou pode reduzir estes para saltos. Desta maneira, o código de três endereços pode ser útil em análise de controlo de fluxo . No seguinte exemplo, C-like, um circuito armazena os quadrados dos números entre 0 e 9:

Veja também

Referências

  1. ^ V., Aho, Alfred (1986). Compiladores, princípios, técnicas e ferramentas . Sethi, Ravi., Ullman, Jeffrey D., 1942-. Reading, Mass .: Addison-Wesley Pub. Co. p. 466. ISBN  0201100886 . OCLC  12285707 .