Visão geral dos compiladores C

Vamos aprender esse conceito de compiladores com um exemplo. Suponha que você já esteve em um lugar onde os idiomas que você fala são completamente diferentes um do outro e agora você teve alguns problemas de viagem e deseja comunicar o mesmo com eles. Quão? Você precisava de um tradutor, certo? Você opta por ter alguém que possa entender seu idioma e traduzir e deixar a pessoa oposta entender o que você queria dizer. Da mesma forma, estaríamos escrevendo nosso código C em uma linguagem de alto nível que é um formato compreensível para humanos. Como o programa entenderia o que pedimos para fazer? É aqui que o compilador entra em cena. Um compilador transforma e traduz um idioma de alta qualidade para o idioma compreensível da máquina (baixo nível). O processo de compilação realiza mecanismos básicos de conversão e também detecção de erros. A compilação do front end inclui análise lexical, sintaxe e semântica. E no back-end, a compilação gera e otimiza o código. Portanto, existem muitos compiladores em C como BDS, Clang, GCC, Interactive C, Lattice, Portable C Compiler, Visual Express, etc. Vamos conhecer mais sobre alguns deles.

Explicações para compiladores C

Abaixo estão os principais compiladores de C:

1) Borland Turbo C

O Turbo C é um dos compiladores básicos e populares para a linguagem de programação C. Isso foi introduzido pela primeira vez em 1987; era popular por seu tamanho pequeno, velocidade de compilação e preço baixo. Depois que o Turbo C ++ foi lançado em 1990, os dois compiladores foram mesclados e o nome Turbo C foi descontinuado. Em 2006, a Embarcadero Technologies relançou o Turbo C como freeware. Você se lembra dessa tela azul?

2) Compilador C minúsculo

O Tiny C Compiler foi projetado para funcionar em computadores lentos com pouco espaço em disco. Este é um compilador C do processador ARM. Este compilador iniciou o suporte ao Windows a partir de 2005. Alguns dos recursos são mencionados abaixo.

  1. O tamanho do arquivo é pequeno e de acordo com o proprietário deste compilador (Fabrice Bellard). A rapidez deste compilador é cerca de nove vezes mais rápida que o GCC. A compilação, montagem e vinculação de código foram os principais atributos considerados para medir a rapidez desse compilador.
  2. Esse compilador incluiu muitos recursos específicos do compilador para aumentar a memória opcional, o verificador vinculado e teve maior estabilidade de código.
  3. Esse compilador permite a execução automática de programas durante o tempo de compilação usando apenas argumentos de linha de comando. Dessa forma, os programas são executados no UNIX, usando scripts de shell. A versão mais recente foi lançada em dezembro de 2017.

3) Compilador C Portátil

O Portable C Compiler (PCC) foi um compilador usado e estabelecido muito cedo para a linguagem de programação C, quase em meados de 1970. Este compilador teve uma vida útil longa. Isso prevaleceu durante um período de tal maneira que muitos dos compiladores C foram baseados nele. As vantagens do PCC dependiam de suas capacidades e previsões de probabilidade. O compilador PCC foi criado para que os arquivos de origem dependessem da máquina, não todos, mas apenas alguns deles. Ele pode detectar erros de sintaxe e pode executar verificações perfeitas de validade. Uma nova versão do PCC foi lançada em 10 de dezembro de 2014.

4) CCG

GNU Compiler Collection é o compilador produzido pelo Projeto GNU. Isso suporta muitas linguagens de programação e é uma base de software livre sob a Licença Pública Geral. Este compilador foi lançado pela primeira vez em 1987 e suportava apenas a linguagem de programação C durante o início. Lentamente, expandiu-se para C ++, Java, Android e IOS. Aqui, cada um dos diferentes compiladores de idiomas possui seu próprio programa que lê o código gravado e envia o código da máquina como saída. Todos estes têm uma estrutura interna comum. Quando uma linguagem de alto nível é escrita, conforme o idioma em que está escrita, o compilador analisa o código nessa linguagem e produz uma árvore de sintaxe abstrata. O GCC usa analisadores LALR, mas alternou lentamente para analisadores de descida recursiva para C em 2006. Chegando à parte da otimização, como já se sabe, isso pode ocorrer durante qualquer fase da compilação. No entanto, aqui as otimizações em massa são executadas antes da geração do código e após a sintaxe, análise semântica. Abaixo estão algumas das otimizações realizadas pelo GCC.

  1. Pode eliminar as partes do Código Morto.
  2. Pode eliminar a redundância no nível do código.
  3. Substituição de agregados em relação ao nível escalar.
  4. Pode executar otimizações com matrizes.

No GCC, o back-end é especificado por macros do pré-processador e funções específicas para uma arquitetura específica. Esse código geralmente é criado chamando primeiro um pequeno código de fragmento associado a cada padrão e gera instruções a partir do conjunto de instruções. Isso é feito usando registradores, deslocamentos e endereços escolhidos durante a fase de recarregamento. A versão atual do GCC é 9.2, lançada em 12 de agosto de 2019.

5) Clang

  1. Clang; incluindo C, também é um compilador para linguagens de programação C ++, Objective-C e objetivo-C ++. Este compilador usa LLVM para compilações relacionadas ao código de backend. Este compilador foi projetado para atuar como um substituto para o GCC, suportando muitos de seus sinalizadores de compilação e extensões de idioma.
  2. Clang tem muitos colaboradores, incluindo Apple, Microsoft, Google, Sony e Intel. É um software de código aberto. O LLVM foi usado pela primeira vez pelo GCC para a compilação do front end, mas o GCC causou alguns problemas para os desenvolvedores da Apple, pois o código-fonte é grande e difícil de usar. Então, eles criaram Clang.
  3. Um dos principais objetivos do Clang é fornecer arquitetura baseada em biblioteca. Ele foi projetado para manter mais informações durante o processo de compilação do que o GCC. Isso também ajuda a preservar a forma geral do código original.
  4. O relatório de erro gerado pelo Clang durante a compilação é sempre detalhado e específico em um formato legível por máquina. O Clang sempre teve como objetivo reduzir o uso excessivo de espaço na memória e aumentar a velocidade de compilação em comparação com o GCC, e devido a essas qualidades, tornou-se um dos compiladores usados ​​que mais crescem durante um certo período de tempo. Mas, ao longo de um período, o desempenho de Clang começou a diminuir. Os relatórios informaram que o desempenho estava atrasado com diferenças quase grandes em comparação com o GCC e começaram a ter um desempenho mais lento. As comparações mais recentes indicam que os dois compiladores surgiram e aumentaram seu desempenho, criando novamente uma grande competição entre eles. No entanto, o GCC permanece no topo da lista.

Conclusão

Embora existam muitos compiladores disponíveis para C, o GCC se destaca como um dos melhores a partir de agora. A declaração do vencedor aqui é baseada em durabilidade, otimização, velocidade e verificações de código / erro / sintaxe. Com isso, podemos entender claramente que o Compilador é um pilar importante para as linguagens de programação. Sem o trabalho deles, qualquer programa que escrevemos seria apenas lixo para o sistema.

Artigos recomendados

Este foi um guia para os melhores compiladores C. Aqui discutimos explicações dos compiladores C com cinco breves pontos. Você também pode ler nosso outro artigo sugerido para saber mais.

  1. Compiladores Python
  2. Compiladores Java
  3. Como instalar o C
  4. Vantagens de C
  5. Introdução ao Compilador PHP
  6. Compiladores JavaScript