2024

Compiladores

Nome: Compiladores
Cód.: INF13213L
6 ECTS
Duração: 15 semanas/156 horas
Área Científica: Informática

Língua(s) de lecionação: Português
Língua(s) de apoio tutorial: Português

Objetivos de Desenvolvimento Sustentável

Objetivos de Aprendizagem

* Discutir o conceito de compilador. [Familiaridade]
* Compreender como se dispõem os dados, na memória, em tempo de execução. [Familiaridade]
* Traduzir Árvores de Sintaxe Abstracta para Árvores de Representação Intermédia. [Aplicação]
* Usar máquinas abstractas na geração de código. [Aplicação]
* Compreender as diferentes formas de optimização possíveis de aplicar a um programa durante a sua compilação [Familiaridade]
* Identificar a necessidade e as vantagens ou desvantagens de incorporar “garbage collection” numa linguagem de programação. [Avaliação]
* Determinar as diferenças entre os processos de compilação de linguagens imperativas, funcionais e orientadas a objectos. [Aplicação]
* Escrever um compilador de Árvores de Sintaxe Abstractas que faça uso de várias técnicas de optimização e que produza código para uma máquina abstracta, começando pela tradução para Representação Intermédia. [Avaliação]

Conteúdos Programáticos

1. Modelos de execução
1.1. Registos de activação
1.2. Organização da memória
2. Representação intermédia
3. Geração de código
3.1 Máquinas abstractas
3.2 Compilação "just-in-time"
4. Optimizações
4.1. Blocos básicos e traços
4.2. Selecção de instruções
4.3. Análise de vivacidade
4.4 Alocação de registos
5. Tópicos avançados
5.1. "Garbage collection"
5.2. Compilação de linguagens orientadas a objectos
5.3. Compilação de linguagens funcionais
5.4. Tipos polimórficos
5.5. Ligação dinâmica

Métodos de Ensino

Aulas Teóricas com apresentação de conteúdos, explicação de aplicações e ilustração de exemplos. Aulas práticas com resolução de exercícios e desenvolvimento de exemplos.
A avaliação consiste num conjunto de testes quinzenais ou duas frequências ou um exame final.

Bibliografia

- Modern Compiler Implementation in C, Andrew W. Appel. Cambridge University Press, 1998. (557 páginas)
- Compilers: Principles, Techniques and Tools, Alfred V. Aho, Ravi Sethi e Jeffrey D. Ullman. Addison Wesley, 1986. (1038 páginas)

Equipa Docente (2023/2024 )