Aula 1 - Universidade do Algarve

Propaganda
Introdução da
disciplina.
Compiladores, Aula Nº 1
João M. P. Cardoso
1
©Universidade do Algarve
Aula 1
O que é um compilador?
Software que traduz o texto que
representa um programa para código
máquina capaz de ser executado pelo
computador
? Contudo, um compilador pode ser
muito mais do que isso...
?
2
©Universidade do Algarve
Aula 1
1
Importância
?
?
Papel importante no desenvolvimento de
aplicações complexas em tempo útil
Muitas das matérias abordadas são
utilizadas por outras ferramentas:
Tradução de linguagens
? Interpretação de descrições (ex.: html,
postscript, latex, ficheiros word)
? Procura de palavras ou frases por motores
de busca
?
©Universidade do Algarve
3
Aula 1
Dilema da Programação
?
Assembly é fastidioso, erróneo, pouco
produtivo, etc.
? Embora
possa permitir melhor
desempenho
Desenho de linguagens de alto-nível
? Como implementar a linguagem?
?
? Interpretador
? Compilador
4
©Universidade do Algarve
Aula 1
2
Compilador
Ponto de Origem
Código fonte
descrito numa
linguagem de altonível (ex.: C, C++,
Pascal, etc.)
Compilador
Programa em
Ponto de Destino Linguagem Máquina
©Universidade do Algarve
5
Aula 1
Ponto de Origem
?
Linguagem imperativa (e.g., C/C++, Java, Pascal,
etc.)
?
Estado
• Variáveis escalares
Int sum(int A[], int N) {
• Variáveis do tipo array
Int i, sum = 0;
• Registos
For(i=0; i<N; i++) {
• Atributos de objectos (linguagens orientadas por
sum = sum + A[i];
objectos )
}
? Computação
return sum ;
• Expressões (aritméticas , lógicas , etc.)
}
• Enunciados de atribuição
• Fluxo de controlo (if, switch, etc.)
• Procedimentos (métodos nas linguagens
orientadas por objectos )
6
©Universidade do Algarve
Aula 1
3
Ponto de Destino
?
Linguagem máquina que descreve o programa
com base no ISA (Instruction-Set Architecture)
do processador
Sum: Addi $t0, $0, 0
Addi $v0, $0, 0
? Estado
Loop: beq $t0, $a1, End
• Memória
Add $t1, $t0, $t0
• Registos (de estado, de propósito geral, etc.)
Add $t1, $t1, $t1 ? Computação
Add $t1, $t1, $a0
• Instruções do ISA (MIPS):
Lw $t2, 0($t1)
• Lw $3, 100($2)
Add $v0, $v0, $t2
• Add $3, $2, $1
Addi $t0, $t0, 1
• Bne $2, $3, label
J
Loop
• …
End: jr
$ra
7
©Universidade do Algarve
Aula 1
Tópicos
Estudo das etapas de um compilador
? Implementação de algumas dessas
etapas
? Aulas práticas serão vocacionadas
para implementação e realização de
alguns exercícios
?
8
©Universidade do Algarve
Aula 1
4
Docentes
?
João M. P. Cardoso
? [email protected]
? Gab.
?
2.65
Margarida M. Moura
? [email protected]
? Gab.
2.67
©Universidade do Algarve
9
Aula 1
Conteúdo Programático
?
Aulas Teóricas
Introdução
? Análise lexical
? Análise Sintáctica
? Análise Semântica
? Tradução para código intermédio
? Geração de código final
? Optimização de código
? Tópicos avançados
?
10
©Universidade do Algarve
Aula 1
5
Conteúdo Programático
?
Aulas Teórico-Práticas
Programação de várias etapas de um
compilador (vamos utilizar Java)
? Exercícios de papel e lápis sobre
determinados aspectos
?
?
Trabalhos para Casa
Exercícios levantados nas aulas teóricas
? Realização dos trabalhos para avaliação
?
11
©Universidade do Algarve
Aula 1
Avaliação
1 Frequência (60 %) + Trabalhos
(40%)
? 1 Exame de Época Normal
? 1 Exame de Recurso
? Possibilidade da nota dos trabalhos
contar 40 % nos exames.
?
12
©Universidade do Algarve
Aula 1
6
Bibliografia
Andrew W. Appel. Modern Compiler Implementation in
Java, Cambridge University Press, 1998.
? Alfred V. Aho, Ravi Sethi, Jeffery D. Ullman. Compiler Principles, Techniques, and Tools, Addison-Wesley,
1986. [existe uma versão brasileira]
? Dick Grune, Henri E. Bal, Ceriel J. H. Jacobs, and Koen
G. Langendoen, “Modern Compiler Design,” John Wiley
& Sons, Ltd, 2000.
? Rui Gustavo Crespo. Processadores de Linguagens. IST
Press. 2001. http://istpress.ist.utl.pt/lprocess.html
Com tópicos mais avançados:
? Steven S. Muchnick. Advanced Compiler Design and
Implementation, Morgan Kaufmann Publishers, 1997.
?
13
©Universidade do Algarve
Aula 1
Boa sorte!
POR EXEMPLO, TENHO QUE
SABER COMO FUNCIONA
UM COMPILADOR.
14
©Universidade do Algarve
E DEPOIS?
DEPOIS?
DEPOIS VAMOS
CONSTRUIR
UM
COMPILADOR!
Aula 1
7
Download