UPE Caruaru Sistemas de Informao Disciplina Compiladores Prof
- Slides: 36
UPE – Caruaru – Sistemas de Informação Disciplina: Compiladores Prof. : Paulemir G. Campos Conceitos Básicos de Compilação (Parte 2) 12/30/2021 Comp - Prof. Paulemir Campos 1
Roteiro da Aula n As Fases de um Compilador n Referências 12/30/2021 Comp - Prof. Paulemir Campos 2
As Fases de um Compilador 12/30/2021 Comp - Prof. Paulemir Campos 3
Introdução n n Conceitualmente, um compilador opera em fases; Cada uma dessas fases transforma o programa fonte de uma representação para outra. 12/30/2021 Comp - Prof. Paulemir Campos 4
As Fases de Análise Registra os identificadores e respectivas informações Trata os erros encontrados em cada fase do compilador As Fases de Síntese Fases de um Compilador 12/30/2021 Comp - Prof. Paulemir Campos 5
Gerenciamento da Tabela de Símbolos n Uma função essencial de um compilador é registrar: n n os identificadores usados no programa fonte; e, a coleção de informações dos atributos de cada identificador, como tipo, escopo, e no caso de nomes de procedimentos, dados como número e tipos de argumentos e forma de passagem de parâmetros. 12/30/2021 Comp - Prof. Paulemir Campos 6
Gerenciamento da Tabela de Símbolos n n Uma tabela de símbolos é uma estrutura de dados contendo um registro para cada identificador com campos para os respectivos atributos. Essa estrutura de dados permite que seja encontrado o registro de cada identificador rapidamente, bem como, atualizar seus dados. 12/30/2021 Comp - Prof. Paulemir Campos 7
Gerenciamento da Tabela de Símbolos n n Quando um identificador é detectado no programa fonte pelo analisador léxico, o identificador é incluído na tabela de símbolos. Por enquanto, apenas o nome do identificador é registrado na tabela de símbolos. 12/30/2021 Comp - Prof. Paulemir Campos 8
Gerenciamento da Tabela de Símbolos n Exemplo: Um declaração em Pascal como var posicao, inicial, taxa: real; o tipo “real” não é reconhecido pelo analisador léxico. Tabela de Símbolos 12/30/2021 1 posicao . . . 2 inicial . . . 3 taxa . . . 4 . . . Comp - Prof. Paulemir Campos 9
Gerenciamento da Tabela de Símbolos n As fases seguintes se encarregarão de incluir as outras informações sobre os identificadores na tabela de símbolos. 12/30/2021 Comp - Prof. Paulemir Campos 10
Manipulador de Erros n n Cada fase de compilação pode conter erros. Porém, após detectar um erro, a respectiva fase deve tratá-lo de alguma forma, de modo que a compilação prossiga, permitindo que mais erros no programa fonte possam ser encontrados. 12/30/2021 Comp - Prof. Paulemir Campos 11
Manipulador de Erros n n Um compilador que pára quando encontra o primeiro erro nem é útil e nem pode ser assim. As fases de análise sintática e semântica geralmente manipulam uma grande parcela dos erros detectados pelo compilador. 12/30/2021 Comp - Prof. Paulemir Campos 12
Manipulador de Erros n n A fase de análise léxica pode detectar erros quando caracteres restantes na entrada não forma nenhum símbolo (token) da linguagem. Erros quando o símbolo (token) viola as regras sintáticas da linguagem são determinados na fase de análise sintática. 12/30/2021 Comp - Prof. Paulemir Campos 13
Manipulador de Erros n Já na fase de análise semântica o compilador tenta detectar construções sintaticamente corretas, porém, sem passar a idéia de uma operação. n Ex. : Uma tentativa de adição entre dois identificadores, sendo que um é nome de um array e outro nome de um procedimento. 12/30/2021 Comp - Prof. Paulemir Campos 14
As Fases de Análise n n Com o progresso da tradução, a representação interna do programa fonte pelo compilador modifica-se. Por exemplo, será ilustrado as transformações sofridas pela declaração “posicao : = inicial + taxa * 60” ao longo do processo de compilação. 12/30/2021 Comp - Prof. Paulemir Campos 15
12/30/2021 Comp - Prof. Paulemir Campos 16
As Fases de Análise n O analisador léxico lê os caracteres do programa fonte e agrupa-os numa seqüência de símbolos (tokens), como identificadores, palavras reservadas (if, while, etc), caracteres de pontuação, operadores multi-caracteres como “: =“, etc. 12/30/2021 Comp - Prof. Paulemir Campos 17
As Fases de Análise n Certos símbolos serão referenciados por um “valor léxico”. n Ex. : Quando um identificador como taxa é encontrado, o analisador léxico além de gerar um rótulo ou símbolo, como id e código de identificação, também inclui o identificador “taxa” na tabela de símbolos, caso já não tenha sido inserido. 12/30/2021 Comp - Prof. Paulemir Campos 18
As Fases de Análise n Foram utilizados id 1, id 2 e id 3 para posicao, inicial e taxa, respectivamente, para enfatizar que a representação interna de um identificador é diferente da seqüência de caracteres que formam o identificador. 12/30/2021 Comp - Prof. Paulemir Campos 19
As Fases de Análise Estrutura de dados típica de uma árvore de análise sintática 12/30/2021 Comp - Prof. Paulemir Campos 20
Geração de Código Intermediário n n Após as análises sintática e semântica, alguns compiladores geram uma representação intermediária explícita do programa fonte. Pode-se imaginar da representação intermediária como um programa para uma máquina abstrata. 12/30/2021 Comp - Prof. Paulemir Campos 21
Geração de Código Intermediário n Essa representação intermediária pode ter duas propriedades importantes: n n ser fácil de produzir; e, fácil de traduzir para o programa alvo. 12/30/2021 Comp - Prof. Paulemir Campos 22
Geração de Código Intermediário n n A representação intermediária pode ter uma variedade de formas. Neste caso, optou-se por uma forma intermediária chamada “código de três endereços”, consistindo de uma seqüência de instruções, cada uma com no máximo três operandos. 12/30/2021 Comp - Prof. Paulemir Campos 23
Geração de Código Intermediário n Semelhante a linguagem assembly para uma máquina em que toda posição de memória pode atuar como um registrador. 12/30/2021 Comp - Prof. Paulemir Campos 24
Geração de Código Intermediário n Ex. : “Código de três endereços” para o código fonte posicao : = inicial + taxa * 60 temp 1 : = int. To. Real(60) temp 2 : = id 3 * temp 1 temp 3 : = id 2 + temp 2 id 1 : = temp 3 12/30/2021 Comp - Prof. Paulemir Campos 25
Geração de Código Intermediário n Esta forma intermediária tem várias propriedades: n Cada instrução tem no máximo um operador na atribuição. Assim, o compilador quando gerar estas instruções deve decidir a ordem em que as operações serão feitas ou avaliadas; 12/30/2021 Comp - Prof. Paulemir Campos 26
Geração de Código Intermediário n Esta forma intermediária tem várias propriedades (Cont. ): n n O compilador deve gerar um identificador temporário para guardar o valor computado por cada instrução; E, algumas instruções tem menos que três operandos, como a primeira e última instruções. 12/30/2021 Comp - Prof. Paulemir Campos 27
Otimização do Código Intermediário n n Nesta fase tenta-se melhorar o código intermediário, almejando a obtenção de um código de máquina que execute mais rápido. Algumas otimizações são triviais. 12/30/2021 Comp - Prof. Paulemir Campos 28
Otimização do Código Intermediário n Por exemplo, um algoritmo gerou o código intermediário para a atribuição “posicao : = inicial + taxa * 60”, usando uma instrução para cada operador na representação em árvore após a análise semântica, ainda que há um melhor caminho para efetuar este mesmo cálculo usando duas instruções. 12/30/2021 Comp - Prof. Paulemir Campos 29
Otimização do Código Intermediário n n Não há nada errado com este algoritmo simples, uma vez que o problema pode ser resolvido durante a fase de otimização de código. Assim, o compilador pode deduzir que a conversão de 60 de inteiro para real pode ser feita imediatamente em tempo de compilação. 12/30/2021 Comp - Prof. Paulemir Campos 30
Otimização do Código Intermediário n Além disso, temp 3 é usado apenas para transferir o seu conteúdo para id 1. Logo, obtém-se o código intermediário otimizado: temp 1 : = id 3 * 60. 0 id 1 : = id 2 + temp 1 12/30/2021 Comp - Prof. Paulemir Campos 31
Geração do Código Alvo n Esta é a fase final do compilador. n O código alvo em geral consiste de: n n código de máquina realocável; ou, código assembly. 12/30/2021 Comp - Prof. Paulemir Campos 32
Geração do Código Alvo n n Posições de memória são selecionadas para cada variável usada pelo programa. Assim, instruções intermediárias são traduzidas numa seqüência de instruções de máquina equivalentes. 12/30/2021 Comp - Prof. Paulemir Campos 33
Geração do Código Alvo n n Um aspecto crucial é a atribuição de variáveis para registradores. Por exemplo, usando os registradores 1 e 2, podemos obter: MOV R 2, id 3 MULT R 2, #60. 0 MOV R 1, id 2 12/30/2021 ADD R 1, R 2 MOV id 1, R 1 Comp - Prof. Paulemir Campos 34
Geração do Código Alvo n n n Os primeiro e segundo operandos de cada instrução especifica um destino e origem de dados, respectivamente. O símbolo ‘#’ indica que o número 60 pode ser tratado como uma constante. O resultado de cada operação é armazenado no primeiro operando. 12/30/2021 Comp - Prof. Paulemir Campos 35
Referências n Aho, A. V. ; Sethi, R. e Ullman, J. D. Compilers: Principles, Techniques, and Tools. Addison Wesley Longman, 1985. (Capítulo 1, seção 1. 3). 12/30/2021 Comp - Prof. Paulemir Campos 36
- Compiladores
- Compiladores
- Curso de compiladores
- Compiladores
- Curso expresiones regulares
- Numa competição esportiva cinco atletas estão
- Didysis lokiu ezeras
- Upe 2017
- Percebe se na fala de susanita aspectos preconceituosos
- Skrubai
- Upe 2a
- Ka vadiname upe
- Upe dentre as categorias taxonomicas apresentadas abaixo
- Certo fabricante segundo levantamentos estatísticos
- Ouvidoria do hospital universitário oswaldo cruz / upe
- Casnav
- Disciplina como valor
- Cualidad
- Strofa je
- Acorde disciplina
- Que son los monosílabos
- Disciplina operativa pemex
- O que é disciplina operacional
- O que é a vara da disciplina
- Que es una disciplina científica
- Imagens da disciplina de português
- Disciplina teletransmitida
- El orden y la disciplina
- Definición de disciplina
- Poblacion finita
- Disciplina
- Disciplina
- Disciplina externa
- Upravljanje razredom
- Definición de disciplina
- La fijacion de los hechos quinta disciplina
- Peter senge 1990 the fifth discipline