fonte: Compiladores - Princípios Técnicas e Ferramentas. Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman
Há vários tipos de código intermediário: quádruplas, triplas, notação polonesa pós-fixada, etc.
Será descrito uma introdução sobre “Código de três endereços”.
O que isso significa?
O código de três endereços é composto por uma seqüência de instruções envolvendo operações binárias ou unárias e uma atribuição. O nome “três endereços” está associado à especificação, em uma instrução, de no máximo três variáveis: duas para os operadores binários e uma para o resultado.
Mas como assim?
Por exemplo: Instruções de Atribuição
- Para representar uma instrução de atribuição utiliza o operador de atribuição ":=", onde à esquerda ficará a variável que irá armazenar os valores. Para uma operação binária é mostrado a seguir:
a := b op c
- Para operador unário:
- Ou, apenas para uma simples cópia:
Exemplo:
Expressão C/C++ >>> Tradução
- a= b a := b;
- a = b + c a := b +c
- a= -b a := -b
x = y + z * k
Tradução
_t1 := z * k
x := y + t1
Como o nome já diz "três endereços" é o máximo de variáveis por instrução por isso a tradução acima.
Praticando:
1. Traduza os seguinte códigos
a. x := (y + z) * (k - 10)
b. x := k - y / 3
c. x := 2 * 5 - k / 3
d. x := 4 * a * b + h / 2
Faça comentários com as suas respostas do exercício.
====================================
Tradução
_t1 := z * k
x := y + t1
Como o nome já diz "três endereços" é o máximo de variáveis por instrução por isso a tradução acima.
Praticando:
1. Traduza os seguinte códigos
a. x := (y + z) * (k - 10)
b. x := k - y / 3
c. x := 2 * 5 - k / 3
d. x := 4 * a * b + h / 2
Faça comentários com as suas respostas do exercício.
====================================