Universidade de Évora
Departamento de Informática
Construção e
Optimização de Compiladores
2004/2005
Exame época especial
Data final de entrega: 26/9/2005
Modo de entrega: via email para pq@di.uevora.pt
Implemente o seu
melhor optimizador de código intermédio.
O código
intermédio a optimizar é constituído por uma
sequência de instruções (quádruplos) no
seguinte formato:
id <- id_n op id_n
id <- id_n
id <- M[id_n]
M[id_n] <- id_n
goto label
label:
if id_n op_rel id_n goto label
else goto label
id(id_n, ..., id_n)
id <- id(id_n,...,id_n)
De acordo com as seguintes definições:
id <- [a-zA-Z]+
n <- [0-9]+
id_n <- id | n
label <- id
op <- + | - | * | /
op_rel <- < |
> | <= | >= | = | !=
O optimizador deverá
receber como input um ficheiro de texto constituído por
uma sequência de instruções no formato descrito
anteriormente (uma instrução por linha) e deverá
produzir como output o correspondente programa já
optimizado (e com o mesmo formato).
Deverá entregar
o código desenvolvido, um makefile, 3
ficheiros que ilustrem as optimizações implementadas e
um relatório que descreva o trabalho realizado.
Bom exame!