TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

A Atividade Compiladores

Por:   •  20/10/2020  •  Trabalho acadêmico  •  2.157 Palavras (9 Páginas)  •  166 Visualizações

Página 1 de 9

QUESTÕES

1) Defina o que é um Compilador, sua entrada e saída.

R.: Compilador é um programa que realiza a leitura de uma programação relacionada a outro programa, escrito em uma linguagem fonte e procede com a tradução em um programa em uma linguagem-alvo (objeto). O programa objeto, supre e atende a máquina por se tratar de código de máquina, assembly (linguagem de montagem). O compilador realiza o meio de campo entre as linguagens de alto nível e baixo nível, realizando a tradução seguida pelas análises léxica, sintática e semântica, durante este processo são identificados os problemas e apresentadas as mensagens de erro ou inconsistência no código fonte. Entrada = Programa Fonte (alto nível)  COMPILADOR  Saída = Programa Objeto (baixo nível)

2) Quais são as etapas que constituem o processo de Compilação? Explique resumidamente cada uma delas. Quais fazem parte da Análise e quais fazem parte da Síntese?

R.: O processo de Compilação é dividido em: Analisador Léxico, Analisador Sintático, Analisador Semântico, Gerador de Código Intermediário, Otimizador de Código e o Gerador de Código.

  • Analisador Léxico: conhecido como scanner, responsável por ler os caracteres do programa fonte associados a símbolos básicos (tokens) os agrupa e organiza;
  • Analisador Sintático: conhecido como parser, obtém uma cadeia de tokens proveniente do analisador léxico e verifica se o mesmo pode ser gerado pela gramática da linguagem-fonte (montar uma árvore sintática). Durante a verificação emiti mensagens relatando quaisquer erros de sintaxe e formas de se recuperar de erros comuns, a fim de continuar processando o código de entrada;
  • Analisador Semântico: é responsável por verificar aspectos relacionados ao significado das instruções, nesse momento ocorre a validação de uma série de regras que não podem ser verificadas nas etapas anteriores. O analisador semântico utiliza a árvore sintática e a tabela de símbolos para fazer as analise semântica. Ao percorrer a árvore sintática relaciona os identificadores com seus dependentes de acordo com a estrutura hierárquica;
  • Gerador de Código Intermediário: a  linguagem  utilizada  para  a  geração  de  um  código  em  formato  intermediário  entre a linguagem  de  alto  nível  e  a  linguagem assembly  deve  representar  todas  as  expressões  do programa original, de forma independente do processador para o qual o programa será gerado. Na  verdade,  compiladores  não  trabalham  diretamente  com  o  código  de  um  processador específico.   Normalmente   o   código   gerado   nessa   fase   é   expresso   em   alguma   linguagem intermediária, próxima do assembly, mas independente de processador;
  • Otimizador de Código: a fase  de  otimização  tenta  melhorar  o  código  intermediário,  de  forma  que  venha  resultar um  código  de  máquina  mais  rápido  em  tempo  de  execução.  Existem  otimizações  das  mais básicas até as mais complexas. A  representação  intermediária  é  gerada  de  forma  que  obtenha  a  mesma  saída  do  código fonte, entretanto, às vezes, o código gerado pode ser muito mais eficiente através da eliminação de  alguns  comandos  desnecessários.  O  objetivo  dessa  etapa  é  aplicar  um conjunto  de  técnicas  para  detectar  tais  sequências  e  substituí-las  por  outras  que  removam  as situações de ineficiência. Não é uma etapa obrigatória, em torno de geração;
  • Gerador de Código: a partir do código intermediário ocorre a transformação por meio do mapeamento em um código assembly, linguagem de máquina ou objeto. As propriedades específicas da máquina-alvo se tornam o fator principal. O código de máquina atende os requisitos físicos e lógicos acerca da máquina, a qual se destinam.

Análise:

- Analisador Léxico

- Analisador Sintático

- Analisador Semântico

Síntese:

- Gerador de Código Intermediário

- Otimizador de Código

- Gerador de Código

3) Explique a diferença de um compilador e um interpretador.

R.: Compilador, é um programa que compreende um conjunto de programas. Tem por objetivo principal traduzir todas as suas linhas de código de uma linguagem para outra linguagem  alvo. Normalmente de alto nível para outra de baixo nível.  

Interpretador, é um programa ( ou conjunto de programas) que traduz ou converte o código todo para linguagem de baixo nível (código de máquina). No entanto executa diretamente cada instrução, passo a passo.

A diferença principal está na forma de execução, visto que enquanto um compilador analisa todo o código a fim de traduzi-lo de uma única vez (geralmente gerando um executável), o interpretador realiza esse trabalho de conversão aos poucos, sempre que uma declaração ou função é executada, por exemplo. Muitas vezes a interpretação aparenta levar mais tempo para finalizar, contudo o compilador apresenta seus passos a fim de gerar o produto final. Se diferenciando, já que uma vez compilado não é necessário realizar mais essa tradução, a não ser que o código seja alterado.

4) Como funciona o processo híbrido que utiliza um compilador e uma máquina virtual? Explique.

R.: Algumas linguagens de programação utilizam o processo de compilação de código fonte que gera um código objeto que se torna um código intermediário (bytecodes) para execução em uma máquina virtual. A exemplo temos a linguagem Java na qual sua execução não está diretamente relacionada com o sistema operacional, ocorre a comunicação diretamente com a JVM (Java Virtual Machine), possibilitando assim a portabilidade de seu código em diferentes sistemas operacionais. A JVM não trabalha diretamente com código Java, mas sim com um código específico chamado ByteCode, que é gerado pelo compilador Java (javac). Esse código é o que será traduzido pela Virtual Machine em código de máquina específico.

...

Baixar como (para membros premium)  txt (12.4 Kb)   pdf (122.3 Kb)   docx (321.9 Kb)  
Continuar por mais 8 páginas »
Disponível apenas no TrabalhosGratuitos.com