Escolar Documentos
Profissional Documentos
Cultura Documentos
Pedro Vasconcelos
DCC/FCUP
2020
Esta aula
Objetivos e funcionamento
Compiladores e interpretadores
Extras
Conteúdos e objetivos
Aulas teóricas
Aulas laboratoriais
I Resolução de exercícios
1
E.g. X86, ARM, . . .
2
Java Virtual Machine
Fases de um compilador
Representação
Frontend Backend
intermédia
texto do programa Seleção de instruções
↓
Análise lexical ↓
↓ código assembly simbólico
sequência de tokens ↓
↓ Geração de código Alocação de registos
Análise sintática ↓ ↓
↓ código intermédio código assembly concreto
árvore sintática abstrata ↓
↓
Assembler & linker
Análise semântica ↓
↓
AST & tabela de símbolos código executável
Decomposição em fases
Vantagens da interpretação:
Vantagens da compilação:
I É muito mais comum o compilador ser escrito na mesma linguagem que ele traduz
(self-hosting):
GCC é escrito em C
Javac é escrito em Java
GHC é escrito em Haskell
Ocamlc é escrito em OCaml
Rustc é escrito em Rust
Porquê self-hosting?
Fonte:Wikipedia
https://en.wikipedia.org/wiki/Rust_(programming_language).
O que faz um compilador real?