Diferença entre fase e passagem no compilador

Diferença entre fase e passagem no compilador
Diferença entre fase e passagem no compilador

Vídeo: Diferença entre fase e passagem no compilador

Vídeo: Diferença entre fase e passagem no compilador
Vídeo: CONJUNÇÃO: O que é Conjunção? Conjunções Coordenativas ou Subordinativas? 2024, Julho
Anonim

Fase vs Passagem no Compilador

Em geral, compilador é um programa de computador que lê um programa escrito em uma linguagem, que é chamada de linguagem de origem, e o traduz para outra linguagem, que é chamada de linguagem de destino. Tradicionalmente, a linguagem de origem era uma linguagem de alto nível, como C++, e a linguagem de destino era uma linguagem de baixo nível, como a linguagem Assembly. Assim, em geral os compiladores podem ser vistos como tradutores que traduzem de um idioma para outro. Pass e Phase são dois termos frequentemente usados com compiladores. Número de passagens de um compilador é o número de vezes que ele passa pela fonte (ou alguma forma de representação dela). Um compilador é dividido em partes para facilitar a construção. Fase é frequentemente usada para chamar uma única parte independente de um compilador.

O que é uma passagem em um compilador?

Uma maneira padrão de classificar compiladores é pelo número de “passagens”. Normalmente, a compilação é um processo relativamente intensivo em recursos e, inicialmente, os computadores não tinham memória suficiente para armazenar um programa que fazia o trabalho completo. Devido a essa limitação de recursos de hardware nos primeiros computadores, os compiladores eram divididos em subprogramas menores que faziam seu trabalho parcial revisando o código-fonte (fazendo uma “passagem” pela fonte ou alguma outra forma dele) e realizavam análises, transformações e tarefas de tradução separadamente. Portanto, dependendo dessa classificação, os compiladores são identificados como compiladores de uma passagem ou de várias passagens.

Como o nome sugere, compiladores de uma passagem compilam em uma única passagem. É mais fácil escrever um compilador de uma passagem e também eles executam mais rápido do que os compiladores de várias passagens. Portanto, mesmo no momento em que você tinha limitações de recursos, as linguagens foram projetadas para que pudessem ser compiladas em uma única passagem (por exemplo, Pascal). Por outro lado, um compilador multi-pass típico é composto de vários estágios principais. O primeiro estágio é o scanner (também conhecido como analisador léxico). O scanner lê o programa e o converte em uma sequência de tokens. O segundo estágio é o analisador. Ele converte a string de tokens em uma árvore de análise sintática (ou uma árvore de sintaxe abstrata), que captura a estrutura sintática do programa. A próxima etapa é a que interpreta a semântica da estrutura sintática. Os estágios de otimização de código e o estágio final de geração de código seguem isso.

O que é uma fase em um compilador?

O termo fase geralmente surge quando você fala sobre construção de compiladores. Inicialmente, os compiladores eram todos os pedaços simples de software monolítico escrito por uma pessoa para a compilação de uma linguagem simples. Mas quando o código-fonte da linguagem a ser traduzida se torna complexo e grande, o compilador foi dividido em várias fases (relativamente independentes). A vantagem de ter fases diferentes é que o desenvolvimento do compilador pode ser distribuído entre uma equipe de desenvolvedores. Além disso, melhora a modularidade e a reutilização, permitindo que as fases sejam substituídas por outras aprimoradas ou fases adicionais (como otimizações adicionais) a serem adicionadas ao compilador. O processo de dividir a compilação em fases foi introduzido pelo PQCC (Production Quality Compiler-Compiler Project) da Carnegie Melon University. Eles introduziram os termos front-end, middle-end e back-end. A maioria dos compiladores tem pelo menos duas fases. Mas geralmente, back-end e front-end encapsulam essas fases.

Qual é a diferença entre Fase e Passagem no Compilador?

Fase e Pass são dois termos usados na área de compiladores. Uma passagem é uma única vez que o compilador passa (percorre) o código-fonte ou alguma outra representação dele. Normalmente, a maioria dos compiladores tem pelo menos duas fases chamadas front-end e back-end, enquanto elas podem ser de uma ou várias passagens. Phase é usado para classificar compiladores de acordo com a construção, enquanto pass é usado para classificar compiladores de acordo com como eles operam.

Recomendado: