Diferença entre fase e passagem no compilador

Anonim

Fase vs Pass no compilador

Em geral, o compilador é um programa de computador que lê um programa escrito em um idioma, que é chamado de idioma de origem, e o traduz para outro idioma, que é chamado de idioma de destino. Tradicionalmente, o idioma 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 se traduzem de um idioma para outro. Pass e Phase são dois termos usados ​​com compiladores. O número de passagens de um compilador é o número de vezes que passa pela fonte (ou alguma forma de representação dele). Um compilador é dividido em peças para a conveniência da construção. A fase é freqüentemente usada para chamar uma única parte independente de um compilador.

O que é um Passe 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 realizar um programa como esse que realizasse o trabalho completo. Devido a essa limitação de recursos de hardware em computadores iniciais, os compiladores foram divididos em sub-programas menores que fizeram seu trabalho parcial passando pelo código-fonte (fez uma "passagem" sobre a fonte ou alguma outra forma) e realizou análise, transformações e tarefas de tradução separadamente. Então, dependendo dessa classificação, os compiladores são identificados como compiladores de passagem única ou multipass.

Como o nome sugere, os compiladores de uma só conta compõem 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 multipass. Portanto, mesmo no momento em que você teve limitações de recursos, os idiomas foram projetados para que eles pudessem ser compilados em uma passagem única (por exemplo, Pascal). Por outro lado, um compilador multipass típico é composto por várias etapas principais. O primeiro estágio é o scanner (também conhecido como o analisador lexical). O scanner lê o programa e o converte em uma série de tokens. O segundo estágio é o analisador. Converte a cadeia de tokens em uma árvore de análise (ou uma árvore de sintaxe abstrata), que captura a estrutura sintática do programa. O próximo estágio é o 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 aparece quando você fala sobre compilação de compilação. Inicialmente, os compiladores eram todas as simples peças de software monolítico único escrito por uma pessoa para a compilação de uma linguagem simples. Mas quando o código-fonte do idioma a ser traduzido torna-se complexo e grande, o compilador foi dividido em múltiplas fases (relativamente independentes).A vantagem de ter diferentes fases é 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 fases melhoradas ou 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) na Carnegie Melon University. Eles apresentaram 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 Phase e Pass in Compiler?

Phase and Pass são dois termos usados ​​na área de compiladores. Uma passagem é uma única vez que o compilador passa (passa) o código de fontes ou alguma outra representação dele. Normalmente, a maioria dos compiladores tem pelo menos duas fases denominadas front end e back end, enquanto elas podem ser de passagem única ou multipass. A fase é usada para classificar compiladores de acordo com a construção, enquanto a passagem é usada para classificar os compiladores de acordo com a forma como operam.