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