Trabalho Compiladores - Otimizações

Objetivo: Implementar otimizações e/ou transformações sobre o código fonte, representado em 3-end., de uma linguagem Mini Pascal.

O que deve ser implementado?

    1. Otimização DCE (Dead Code Elimination): Observe que a eliminação deve ser feita dentro de cada bloco básico. Pode ser interessante construir DAGs e fazer a eliminação a partir desses DAGs.

    1. Otimização sobre simplificações algébricas: As simplificações devem ocorrer dentro de cada bloco básico.

    1. Otimização CSE (Common Subexpression Elimination): A eliminação de subexpressões comuns deve ocorrer dentro de cada bloco básico.

    1. Algoritmo de alcance de definições (Reaching Definitions): Deve-se implementar aqui o algoritmo de alcance de definições (cálculo dos conjuntos in, out, gen e kill) para cada bloco básico de um programa/procedimento;

    1. Algoritmo de Next-Use Information: O algoritmo deve ser executado dentro de cada bloco básico.

    1. Algoritmo para Atribuição de Registradores Simbólicos: Nesse algoritmo, deve-se analisar todos os BBs de um procedimento para que a atribuição (e uso) dos registradores simbólicos seja corretamente implementada.

    1. Algoritmo de List Scheduling Simples: O intuito aqui é alterar a ordem das operações, respeitando as dependências, de forma a minimizar os stalls. Nesse caso, deve-se construir DAGs para as expressões. Nesse algoritmo, deve-se analisar todos os BBs de um procedimento para que o escalonmento seja corretamente implementado.

Sugestão de metodologia?


Qual o Cronograma ?

  1. O que foi implementado
  2. O que faltou implementar
  3. A sintaxe para execução da ferramenta
  4. Bugs/Falhas detectados e não corrigidos
  5. Dificuldades encontradas durante o desenvolvimento do trabalho
  6. Conclusões

Como será a avaliação?

Dicas/Sugestões

Perguntas frequentes:

Consulte – Atribuição do Trabalho 1 na página da disciplina. ATENÇÃO: Preste atenção nos prazos, não há muita flexibilidade para entrega do trabalho.