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

A diferença entre compilação e tradução do ponto de vista dos processadores organizacionais

Trabalho acadêmico: A diferença entre compilação e tradução do ponto de vista dos processadores organizacionais. Pesquise 859.000+ trabalhos acadêmicos

Por:   •  10/12/2013  •  Trabalho acadêmico  •  1.340 Palavras (6 Páginas)  •  281 Visualizações

Página 1 de 6

Estudo dirigido - proposto em aula 20/05/2013: Tradução x Compilação:

Explique em detalhes as diferenças entre compilação e tradução sob a ótica da organização de processadores.

Para executar uma tarefa qualquer, um computador precisa receber instruções precisas sobre o que fazer. Uma seqüência adequada de instruções de computador, para a realização de uma determinada tarefa, se constitui num PROGRAMA de computador. Uma linguagem de programação é um conjunto de ferramentas, regras de sintaxe e símbolos ou códigos que nos permitem escrever programas de computador, destinados a instruir o computador para a realização de suas tarefas. A primeira e mais primitiva linguagem de computador é a própria linguagem de máquina, aquela que o computador entende diretamente e pode ser diretamente executada pelos circuitos do processador (pelo hardware). No início da era da computação, os programas eram escritos em linguagem de máquina, isto é, as instruções eram escritas diretamente na linguagem do computador (formada apenas com 1′s e 0′s). Um programa em linguagem de máquina é uma longa série de 0′s e 1′s, ordenados de forma que alguns representam códigos de instruções e outros representam os dados que serão processados (ou indicam onde esses dados estão armazenados). Em um programa escrito em linguagem de máquina, cada instrução escrita pelo programador será individualmente executada, isto é, a cada instrução do programa corresponderá uma ação do computador. A relação é portanto 1 para 1 – uma instrução do programa corresponde a uma operação do computador.

TRADUÇÃO

Um programa escrito por um programador (chamado código fonte) em uma linguagem de alto nível é um conjunto de instruções que é clara para programadores, mas não para computadores. Ou seja, os computadores entendem única e exclusivamente suas linguagens nativas, as linguagens de máquina. Programas em linguagem de alto nível, a exemplo dos programas escritos em linguagem de Montagem, também precisam ser traduzidos para linguagem de máquina para poderem ser submetidos ao computador e processados. O processo de tradução do programa escrito em uma linguagem simbólica pelo programador, chamado código fonte (source code) para a linguagem de máquina do computador chamada código objeto (object code), é chamado compilação e é realizado por um programa chamado Compilador (Compiler). Tradução sucessiva de uma linguagem para outra intermediária mais simples, da linguagem fonte até à linguagem objeto.

Cada tradução pode dividir-se nas seguintes fases:

Análise Léxica (scanner)

Ele separa a sequência de caracteres que representa o programa fonte em entidades ou tokens, símbolos básicos da linguagem. Durante a análise léxica, os tokens são classificados como palavras reservadas, identificadores, símbolos especiais, constantes de tipos básicos (inteiro real, literal, etc.), entre outras categorias. Basicamente é reconhecer as sequências de símbolos que representam uma unidade. Ex.: o nome de uma variável, uma constante, uma palavra chave de uma instrução (while). Um token consiste de um par ordenado (valor, classe). A classe indica a natureza da informação contida em valor. Outras funções atribuídas ao analisador léxico são: ignorar espaços em branco e comentários, e detectar erros léxicos.

Análise Sintática (parser)

Ele agrupa os tokens fornecidos pelo analisador léxico em estruturas sintáticas, construindo a árvore sintática correspondente. Para isso, utiliza uma série de regras de sintaxe, que constituem a gramática da linguagem fonte. É a gramática da linguagem que define a estrutura sintática do programa fonte. O analisador sintático tem também por tarefa o reconhecimento de erros sintáticos, que são construções do programa fonte que não estão de acordo com as regras de formação de estruturas sintáticas como especificado pela gramática. Identifica a estrutura gramatical do programa e reconhece o papel de cada componente. É normalmente construída uma árvore sintática do programa e uma tabela de símbolos, que identifica variáveis.

Analisador Semântico

O compilador executa ainda a análise semântica. O analisador semântico utiliza a árvore sintática determinada pelo analisador sintático para: identificar operadores e operandos das expressões, reconhecer erros semânticos, fazer verificações de compatibilidade de tipo, analisar o escopo das variáveis, fazer verificações de correspondência entre parâmetros atuais e formais. Fundamentalmente, a análise semântica trata os aspectos sensíveis ao contexto da sintaxe das linguagens de programação. Por exemplo, não é possível representar em uma gramática livre de contexto uma regra como “Todo identificador deve ser declarado antes de ser usado.“, e a verificação de que essa regra foi aplicada cabe à análise semântica.

Otimização de Código

O processo de otimização de código consiste em melhorar o código intermediário de tal forma que o programa objeto resultante seja mais rápido em tempo de execução. Por exemplo, um algoritmo para geração do código intermediário gera uma instrução para cada operador na árvore sintática, mesmo que exista uma maneira mais otimizada de realizar o mesmo comando.

Geração de Código

A fase final do compilador é a geração do código para o programa objeto, consistindo normalmente de código em linguagem assembly ou de código em linguagem de máquina. Aqui é o processo de construir instruções da linguagem máquina (em assembly, normalmente) que simulam as instruções reconhecidas pelo analisador sintáctico. A geração de código pode englobar: análise semântica, geração de código intermédio, otimizadores e geração de código final.

MONTAGEM

O processo de montagem traduz um programa escrito em linguagem Assembly em um programa equivalente em linguagem de máquina, possível de ser executado pelo computador. A seguir, é apresentado o fluxo que representa o processo de montagem.

No

...

Baixar como (para membros premium)  txt (9.8 Kb)  
Continuar por mais 5 páginas »
Disponível apenas no TrabalhosGratuitos.com