Aula 1

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
Importância


Papel importante no desenvolvimento de
aplicações complexas em tempo útil
Muitas das matérias abordadas são
utilizadas por outras ferramentas:



3
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
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
Compilador
Ponto de Origem
Código fonte
descrito numa
linguagem de altonível (ex.: C, C++,
Pascal, etc.)
Compilador
Ponto de Destino
5
Programa em
Linguagem Máquina
©Universidade do Algarve
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
Ponto de Destino

Linguagem máquina que descreve o programa
com base no ISA (Instruction-Set Architecture)
do processador
 Estado
Sum: Addi $t0, $0, 0
Addi $v0, $0, 0
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
Docentes

João M. P. Cardoso
[email protected]
 Gab. 2.65


Margarida M. Moura
[email protected]
 Gab. 2.67

9
©Universidade do Algarve
Aula 1
Conteúdo Programático

Aulas Teóricas








10
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
©Universidade do Algarve
Aula 1
Conteúdo Programático

Aulas Teórico-Práticas



Trabalhos para Casa


11
Programação de várias etapas de um
compilador (vamos utilizar Java)
Exercícios de papel e lápis sobre
determinados aspectos
Exercícios levantados nas aulas teóricas
Realização dos trabalhos para avaliação
©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
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
Download