GNU Compiler Collection

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Broom icon.svg
As referências deste artigo necessitam de formatação (desde dezembro de 2013).
Por favor, utilize fontes apropriadas contendo referência ao título, autor, data e fonte de publicação do trabalho para que o artigo permaneça verificável no futuro.
GNU Compiler Collection
GNU Compiler Collection logo.png
GCC 4.1.3 ubuntu7.10 en.png
Programa Olá Mundo gerado pelo GCC
Desenvolvedor Projecto GNU
Versão estável 4.9.1 (16 de julho de 2014; há 9 semanas e 3 dias)
Sistema operacional Multi plataforma
Gênero(s) Compilador
Licença GNU General Public License (version 3 or later)
Página oficial gcc.gnu.org

O GNU Compiler Collection (chamado usualmente por GCC) é um conjunto de compiladores de linguagens de programação produzido pelo projecto GNU para construir um sistema operativo semelhante ao Unix livre.[1] Faz parte do sistema operativo GNU e FSF , sendo uma das ferramentas essencias para manter o software livre, pois permite compilar o código-fonte (software) em binários executáveis para as várias plataformas informáticas mais comuns. É distribuído pela Free Software Foundation (FSF) sob os termos da GNU GPL, disponível para sistemas operativos UNIX e Linux e certos sistemas operativos derivados tais como o Mac OS X.

Visão geral[editar | editar código-fonte]

O compilador GCC foi escrito por Richard Stallman em 1987 para servir de compilador para o Projecto GNU. Em 1997, um grupo de desenvolvedores descontentes com o ritmo lento e a natureza fechada do desenvolvimento oficial do compilador GCC, formou-se o projecto EGCS, que juntou várias bifurcações experimentais num único projecto bifurcado do GCC. O desenvolvimento do EGCS, ao provar-se suficientemente mais vital que o GCC, foi eventualmente "abençoado" como a versão oficial do GCC em Abril de 1999. O projecto GCC é agora mantido por um grupo variado de programadores de todo o mundo e até à data tem sido adaptado a mais tipos de processadores e sistemas operativos que qualquer outro compilador.

O GCC tem sido adoptado como compilador principal para construir e desenvolver para um número de sistemas, incluindo GNU/Linux, os BSDs, Mac OS X, NeXTSTEP, BeOS e Haiku.

O GCC é frequentemente eleito o compilador preferido para desenvolver software que necessida de ser executado em vários tipos de hardware. Diferenças entre compiladores nativos levam a dificuldades em escrever código que seja compilado correctamente em todos os compiladores e construir guiões que corram em todas as plataformas. Ao usar os compiladores do projecto GCC, o mesmo analisador gramatical é usado em todas as plataformas, fazendo com que o se o código compila numa, muito provavelmente compilará em todas. O código poderá ser executado um pouco mais lento mas o potencial de redução de custos de produção tende a fazer com que seja a melhor opção disponivel.

Linguagens de programação[editar | editar código-fonte]

Originalmente suportava somente a linguagem de programação C e era designado GNU C Compiler(compilador C GNU). Com o tempo ganhou suporte às linguagens C++, Fortran, Ada, Java e Objective-C, entre outras.

A partir da versão 4.0, o lançamento padrão da GCC inclui fachadas para:

Uma fachada para CHILL foi previamente incluida mas posteriormente abandonada devido à falta de manutenção. A fachada G77 foi abandonada e substituida pela nova fachada GFortran que suporta Fortran 95. Também existem fachadas para Pascal, Modula-2, Modula-3, Mercury, VHDL, PL/1 e Objective-C++.

Arquitecturas[editar | editar código-fonte]

O conjunto dos processadores suportados pelo GCC inclui:

Já foi suportado um vasto conjunto de processadores menos conhecidos que inclui A29K, ARC, Atmel AVR, C4x, CRIS, D30V, DSP16xx, FR-30, FR-V, Intel i960, IP2000, M32R, 68HC11, MCORE, MMIX, MN10200, MN10300, NS32K, ROMP, Stormy16, V850 e Xtensa. Processadores adicionais, tais como o D10V, PDP-10 e Z8000 já foram suportadas por versões do GCC mantidas separadamente da versão FSF.

Estrutura[editar | editar código-fonte]

A interface externa do GCC é geralmente o padrão para os vários compiladores disponibilizados no sistema operativo Linux. Os utilizadores invocam um programa driver chamado gcc, que interpreta os argumentos do comando dado e decide que tipo de compiladores usar para cada ficheiro de entrada, depois corre o assembler (processo de compilação) na sua saida e então possivelmente corre o linker, que liga as bibliotecas de binários necessárias para produzir um ficheiro executável que é um programa de computador funcional e completo.

Cada compilador de linguagem é um programa separado que recebe código-fonte e produz código de linguagem assembly (binários). Todos os compiladores tem uma estrutura de interface comum; uma fachada relativa a cada linguagem de programação que analisa gramaticalmente as linguagens e produz uma árvore abstracta de sintaxe e um back end que converte as árvores na Register Transfer Language do GCC, executa várias optimizações e de seguida produz linguagem assembly usando pattern matching específico de cada arquitectura.

Quase todo o GCC é escrito em C, apesar de grande parte da fachada de Ada ser escrito em Ada.

Fachada[editar | editar código-fonte]

Os front-ends variam internamente, tendo de produzir árvores que possam vir a ser usadas pelo backend. Alguns analisadores gramaticais usam uma especificação gramatical semelhante à do YACC. Outras são analisadores gramaticais recursivos por ordem decrescente.

Até recentemente, a representação da árvore do programa não era totalmente independente do processador-alvo.

Back end[editar | editar código-fonte]

Execução em Back-end ocorre quando o programa, após ter as informações necessárias, ocupa o tempo do processador para executar os comandos definidos anteriormente no código fonte. Neste momento, o programa se "retira", não dependendo de entradas manuais.

Programas em linguagem C podem ter sua alta performance melhor avalida quando executam sem necessidade de entradas manuais. Isto ocorre em sistema que executam em background onde, depois de executado, o programa processa as informações que lhe foram passadas ou as lê de um arquivo ou banco de dados. Desta forma, pode-se mensurar o tempo de execução deste programa, escrito na Linguagem C, com um programa escrito em outra linguagem. Quanto menor for a interface com o usuário, melhor para se avaliar a performance do programa.

Por definição, a implementação do compilador da Linguagem C deve gerar um código de máquina bem similar à da Linguagem Assembly (baixo nível). Esta característica possibilita que a execução em Back-end tenha uma quantidade mínima de instruções necessárias para obter o resultado que foi determinado no código fonte.

Bibliografia[editar | editar código-fonte]

Referências

Ver também[editar | editar código-fonte]

Ligações externas[editar | editar código-fonte]