Você está na página 1de 5

Universidade Tecnológica Federal do Paraná

Curso de Engenharia da Computação


Compiladores
Prof. Marco Antonio Barbosa
1ª Série de Exercícios
Conceitos Básicos de Compiladores
Data de entrega: 15/03/2021
__________________________________________
1)Conceitue compiladores.

Compiladores são programas de computador que traduzem de uma


linguagem para outra. Um compilador recebe como entrada um programa
escrito na linguagem-fonte e produz um programa equivalente na
linguagem-alvo. Geralmente, a linguagem-fonte é uma linguagem de
alto nível, como C ou C++, e a linguagem-alvo é um código-objeto
para a máquina-alvo, ou seja, um código escrito usando as
instruções de máquina do computador no qual ele será executado.

2)Diferencie linguagem de máquina de linguagem de montagem.

Linguagem de máquina – código numérico representando as operações


de máquina a serem efetivamente executadas.Escrever códigos nesse
formato consome muito tempo. Um exemplo de instrução em linguagem
de máquina:
C7 06 0000 0002
representa a instrução para mover o número 2 do endereço 0000
(hexadecimal) em processa-dores Intel 8x86 utilizados em
computadores IBM PC.

Linguagem de montagem- instruções e endereços de memória adotam uma


forma simbólica.Essa linguagem aumentou muito a velocidade e a
precisão com que os programas podem ser escritos. Um exemplo de
instrução em linguagem de montagem:
MOV X , 2
é equivalente à instrução de máquina acima(assumindo que o endereço
de memória X seja 0000).

3)Indique vantagens e desvantagens de uma linguagem montadora.

Vantagens:
• Tamanho dos programas são menores;
• Permite criar ações de alta complexidade, impossíveis ou
difíceis de se realizar em linguagens de alto nível;
Universidade Tecnológica Federal do Paraná
Curso de Engenharia da Computação
Compiladores
Prof. Marco Antonio Barbosa
1ª Série de Exercícios
Conceitos Básicos de Compiladores
• É um programa recomendável onde o tempo é um fator crítico,
como por exemplo: medições de tempo que exigem boa
performance;

Desvantagens:
• Consome muito tempo para o programador
• A linguagem não é portável. Ela é portável apenas dentro de
uma família de processadores;
• Como é uma linguagem específica para processadores de cada
máquina, é necessário desenvolver um programa para cada
máquina;
• Não existe rotinas pré-definidas, o programador deverá
desenvolver suas próprias rotinas;
• Apresenta um número muito reduzido de instruções, do tipo,
operações de movimentação de dados em memória, para registros
e para memórias, e operações lógicas e aritméticas bem
simples. Estas instruções são de baixa expressividade, isto
é, elas são de baixo nível. O programador deve programar num
nível de detalhamento muito maior para fazer a mesma coisa
que em um programa escrito em linguagem de alto nível;

4)Diferencie Compiladores de Interpretadores destacando as


vantagens e desvantagens de cada um deles.

Compilador: Trata-se de um programa de software básico cuja tarefa


principal é a tradução automática de programas-fonte em um texto
equivalente em linguagem alvo, cuja notação possa ser executada no
computador.
Universidade Tecnológica Federal do Paraná
Curso de Engenharia da Computação
Compiladores
Prof. Marco Antonio Barbosa
1ª Série de Exercícios
Conceitos Básicos de Compiladores
Vantagens:
• O código compilado é mais rápido de ser acessado.
• Impossibilita ou pelo menos dificulta ser quebrado e
visualizado o código-fonte original.
• Permite otimização do código por parte do compilador.
• Compila o código somente se estiver sem algum erro.

Desvantagens:
• Para ser utilizado o código precisa passar por muitos níveis
de compilação;
• Assim como vantagem a possibilidade de não poder visualizar o
código-fonte, pode ser uma desvantagem;
•Processo de correção ou alteração do código requer que ele
seja novamente recompilado

Interpretador:São processadores que aceitam como entrada o código


intermediário de um programa anteriormente traduzido e produzem o
efeito de execução do algoritmo original sem, porém, mapeá-lo para
linguagem de máquina.

Vantagens:
• Correções e alterações são mais rápidas de serem realizadas;
• Código não precisa ser compilado para ser executado;
• Consomem menos memória.

Desvantagens:
• Execução é mais lenta do programa;
• Necessita sempre ser lido o código original para ser
executado.

5)Preencha a tabela abaixo com exemplos de linguagens compiladas e


interpretadas

Linguagens Compiladas Linguagens Interpretadas


C++ Python
Delphi JavaScript
Fortran Ruby
Universidade Tecnológica Federal do Paraná
Curso de Engenharia da Computação
Compiladores
Prof. Marco Antonio Barbosa
1ª Série de Exercícios
Conceitos Básicos de Compiladores
6)Ilustre, através de um fluxograma, a estrutura tradicional de um
compilador

7)Diga quais etapas de compilação fazem parte do front-end (frente)


e quais fazem parte do back-end (fundo).

Front-end:Análise léxica, análise sintática, análise semântica


Back-end: Otimização e geração de código

8)As etapas de análise léxica (sistema de varredura) e análise


sintática podem ser construídas utilizando-se formalismos de
Universidade Tecnológica Federal do Paraná
Curso de Engenharia da Computação
Compiladores
Prof. Marco Antonio Barbosa
1ª Série de Exercícios
Conceitos Básicos de Compiladores
Linguagens Formais. Diga quais formalismos podem ser associados a
estas duas etapas.

Expressões regulares e gramáticas livres de contexto.

9)Um compilador pode ser implementado por sistema de uma passada ou


múltiplas passadas. Diga no que implica isto e digas as vantagens e
desvantagens destas estratégias.

Para um compilador, é freqüentemente conveniente processar o


programa-fonte diversas vezes antes de gerar o código. Essas
repetições recebem o nome de passadas.

Compilação em Vários Passos: A execução de algumas fases terminam


antes de iniciar a execução das fases seguintes.
• Vantagem: possibilidade de otimizações no código
• Desvantagem: aumento do Tempo de Compilação

Compilação de um Passo: O programa-objeto é produzido à medida que


o programa-fonte é processado.
• Vantagem: eficiência
• Desvantagem: dificuldade de introdução de otimizações

10)A etapa de otimização de código é uma etapa opcional no processo


de construção do compilador. Então, qual a vantagem em se utilizar
esta etapa? Existe alguma desvantagem?

Vantagens: Pode-se alcançar uma melhoraria no desempenho, a


substituição de instruções lentas por outras mais rápidas e a
eliminação de operações redundantes ou desnecessárias.

Desvantagens: A otimização de código faz com que o compilador gaste


muito tempo de compilação,ela é necessária quando o programa ocupa
uma grande parcela dos ciclos da máquina, se for implementada sem a
real necessidade, a qualidade do código melhorado não valerá o
tempo gasto.

Você também pode gostar