Trabalho Compilador Mini-Pascal e/ou HMDES

Mini-Pascal é um subconjunto dos recursos e possibilidades de construções da linguagem Pascal. HMDES é uma linguagem declarativa que possibilita descrever recursos de hardware de um sistema microprocessado.

As linguagens Mini-Pascal e HMDES serão adotadas neste trabalho. A sintaxe dessas linguagens foi descrita na disciplina de Compiladores I.



Objetivo: Implementar utilizando o analisador de sua preferência (Bison, Javacc ou continuar a implementação do analisador iniciado em Compiladores I) a geração de código de três endereços para a linguagem Mini-Pascal (Parte 1). Posteriormente (Parte 2), serão requisitadas novas implementações que tomarão como base a Parte 1..

O que deve ser implementado (Parte 1)?

O que deve ser implementado (Parte 2)?

    1. Redução de força e eliminação de variáveis de indução

2. 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;

3. Algoritmo de Next-Use Information

4. Algoritmo de escalonamento de instruções baseado em list scheduling

5. Algoritmo de alocação de registradores (sem inserção de spill-code)

6. Algoritmo para criação de du-chains e ud-chains.





Sugestão de metodologia?


Qual o Cronograma ?

Como será a avaliação?

Dicas/Sugestões

Perguntas frequentes:

P: Se faltar no dia do checkpoint, fica com 0?

R: Há duas possibilidades: 1) Se souber, previamente, que irá faltar em dia de checkpoint, a dupla deve avisar ao professor que irá agendar um horário anterior ao dia do checkpoint. 2) caso a falta seja devido a um imprevisto, a dupla deve procurar o professor e deve justificar a ausência e, após isso, o professor marcará um horário para a entrevista. Faltas sem justificativa, aí sim, terão 0 como nota do checkpoint.

P: As notas serão as mesmas para os componentes da dupla?

R: Não. As entrevistas serão com a dupla mas a nota é individual. O fato de um membro da dupla faltar em dia de checkpoint não implica que a entrevista será cancelada. Por isso, é extremamente importante que ambos dividam o trabalho e, continuamente, atualizem-se quanto ao desenvolvimento do mesmo.

P: O que devo privilegiar: implementar todo o conteúdo de uma etapa ou implementar todas as etapas?

R: Se não houver tempo hábil, é melhor implementar o mínimo necessário em uma etapa e partir para a próxima. A contribuição deste trabalho para vocês é justamente a experiência prática com relação à geração de código intermediário.

P: O que fazer em caso de dúvidas no entendimento do trabalho (situações não cobertas pela especificação da linguagem, ausência de detalhes na atribuição das tarefas, etc.)?

R: Procure o professor o quanto antes: pessoalmente ou enviando mensagem eletrônica com subject: "Dúvidas: Trabalho de Compiladores II". Nesse último caso, procure discorrer sucintamente a sua dúvida. Além disso, aproveite bem os encontros de checkpoint para retirar suas dúvidas, sugerir alterações na atribuição do trabalho, justificar suas escolhas. Isso contará na sua participação e dedicação do trabalho.

P: Estou tendo problemas com o outro componente da dupla. O que devo fazer?

R: Uma das motivações desta tarefa é justamente melhorar a habilidade de trabalho em grupo. Nesse sentido, a dupla deve conversar bastante, procurando resolver todos os conflitos que porventura possam surgir. Saber ouvir opiniões, discutir idéias educadamente, ceder sobre pontos de vistas e dividir tarefas é o que aprendemos de melhor em um trabalho em grupo. Certamente, cada membro pode contribuir positivamente  para a nota do outro colega da dupla. Mas,  caso um dos membros "desista" do trabalho. O outro membro pode continuar a implementação que o trabalho será avaliado levando isso em consideração.

P: Se obter nota máxima em todos os itens da avaliação ficarei com 12?

R: Não. A nota máxima é 10! Além disso, esses pontos não são cumulativos.