Semana 8 - Prática: Geração de Código Intermediário (TAC)
Objetivos da Aula
- Desenvolver um protótipo funcional para geração de TAC (Three-Address Code)
- Integrar a travessia da AST com a geração de instruções intermediárias
- Compreender:
- O uso de variáveis temporárias
- O formato linear do código intermediário
- Validar a geração de TAC através de testes automatizados
Conexão com as Sprints
- Sprint anterior: Implementação de análise semântica e anotação da AST.
- Sprint atual:
- Início da geração de código intermediário (TAC).
- Adição de estrutura de geração e uso de temporárias.
- Planejamento da integração com o interpretador ou próxima etapa do backend.
Conceito: Código Intermediário (TAC)
- Formato linear: Instruções com três endereços (ex:
t1 = a + b
). - Temporárias: Variáveis geradas durante a análise (ex:
t1
,t2
). - Abstração da máquina: Independente da arquitetura alvo.
Protótipo: Gerador de TAC
Passos
-
Preparação
bash unzip tac_prototipo_com_tests.zip cd tac_prototipo
-
Compilação
bash make clean && make
-
Testes
bash ./run_tests.sh
-
Verificações
- A correta geração de TAC para expressões válidas
- A estrutura esperada das instruções intermediárias
Tarefa para a Aula Prática
- Estudar a implementação da AST e da função
gerarTAC()
. - Adicionar casos de teste no diretório
tests/
cobrindo: - Expressões aritméticas simples e compostas
- Uso de variáveis e temporárias
- Documentar:
- As funções principais do gerador
- Estratégias de alocação de temporárias
- Integrar o protótipo ao projeto do grupo.
- Planejar o próximo passo do backend (interpretador ou gerador final).
Alinhamento com a Disciplina
- Cronograma: Aula prática 8, após conclusão da análise semântica.
- Objetivo: Início da geração de código no compilador.
- Próximos passos:
- Expansão da geração de TAC
- Implementação de um interpretador para o código intermediário
- Otimizações simples de TAC
Conclusões e Recomendações
- TAC é a ponte entre a AST e o código executável.
- Geradores devem ser organizados e facilmente depuráveis.
- Mensagens e logs de geração ajudam na validação.
- A integração ao projeto deve ser incremental.
- A documentação clara facilita a colaboração em equipe.
Tabela de Versionamento
Versão | Data | Descrição | Autor(es) | Revisor(es) |
---|---|---|---|---|
1.0 | 01/06/2025 | Criação da atividade de desenvolvimento 8 | Júlio Cesar |