|
|
||||||||
|
|||||||||
|
Um Compilador de Prolog com Expansão de CódigoMichel Ferreira Mestrado em Informática pela Universidade do MinhoOutubro 1996
ResumoA forma de obter código especializado tem sido implementada recorrendo a interpretação abstracta para deduzir propriedades do programa, por forma a poder gerar esse código especializado. A abordagem explicada nesta dissertação mostra que não é necessária uma fase de interpretação abstracta. A propagação da informação implícita em cada instrução WAM é suficiente para permitir muitas das optimizações que eram suportadas pela interpretaçao abstracta. A propagação desta informação permite a obtenção de predicados especializados para os diferentes tipos de argumentos que aparecem nos objectivos das cláusulas. Mostra-se ainda que complementando as instruções WAM com informação acerca dos seus argumentos permite reduzir substancialmente a complexidade destas instruções, obtendo um efeito idêntico ao de definir uma nova máquina abstracta de um nível mais baixo do que a WAM. As melhorias obtidas no código gerado comparativamente com o código geral, são equivalentes às melhorias possibilitadas por uma fase de interpretação abstracta nos sistemas que mais partido tiram desta fase de interpretação abstracta, como é o caso do Parma e Aquarius, resultando numa aceleração do tempo de execução do código de cerca de 5 vezes. |
||||||||
|