Introdução aos compiladores C #

No artigo C # Compiler, o Compiler é um programa de software que converte o código-fonte (o código escrito por qualquer desenvolvedor em qualquer idioma) em linguagem de aprendizado de máquina, para que possa ser entendido pelo processador. O processador é a parte mais importante do computador que entende apenas códigos de máquina. Portanto, é obrigatório converter qualquer código de idioma em códigos de máquina.

Em C #, executamos os compiladores, ele pega o código como parâmetro de entrada e realiza algum processamento; após o processamento, ele fornece a saída no idioma intermediário. Essa saída é salva nos arquivos * .dll ou * .exe

Portanto, após a linguagem intermediária gerada, é necessário converter essa IL em códigos de máquina, porque o processador entende apenas os códigos de máquina. Então, usamos o CLR (Common Language Runtime) para essa conversão. O CLR é um programa que é executado no computador e altera o código IL para códigos de máquina com a ajuda do Just-In-Time (geralmente chamado JIT). Quando clicamos duas vezes no arquivo .exe, o compilador JIT é chamado e compila o código IL nessa parte do tempo, por isso é chamado JUST-IN-TIME (JIT).

A compilação pode ser feita de forma implícita ou explícita. A compilação implícita é duas vezes em que primeiro é compilado IS e depois é compilado na linguagem de máquina. Esse processo é chamado de compilação JIT ou compilação JUST-In-Time. O JIT suporta múltiplas plataformas e acelera a execução do código.

Tipos de compilador just-in-time

Existem três compiladores Just-In-Time diferentes

1. Compilador pré-JIT

Nesse compilador, existe apenas um único processo de compilação, pois todo o código-fonte é compilado no código nativo.

2. Compilador JIT normal

Nesse compilador, apenas esses métodos são compilados no código da máquina, necessário em tempo de execução. O compilador compila esses métodos, os armazena no cache e usou o mesmo método novamente.

3. Compilador Econo JIT

Nesse compilador, apenas esses métodos são compilados no código da máquina, necessário em um tempo de execução; no entanto, esses métodos são removidos se não forem necessários. No JIT, apenas o método necessário é compilado no tempo de execução, portanto, requer menos uso de memória.

No diagrama acima

1-3 etapas serão executadas no momento da compilação

3-5 etapas serão executadas no tempo de execução.

Então, quando executamos esses dois tipos de erro, ocorre.

Erros em tempo de execução e erros do compilador

  • Erros do compilador: esse tipo de erro ocorre no próprio compilador C #. Isso impede que o código C # seja compilado no formato .exe. Esses erros ocorrem basicamente devido a um erro de sintaxe. Quando escrevemos incorretamente qualquer sintaxe ou perdemos a vírgula ou ponto-e-vírgula, o compilador não entendeu isso, então interrompe o processamento e lança o erro em tempo de compilação. Podemos ver esses erros na janela de saída do IDE. Portanto, examinando esses erros, podemos retificar nosso código.
  • Erros de tempo de execução: são erros em tempo real. Isso ocorre quando o código é compilado com êxito, mas encontra problemas durante a execução. Isso afeta o comportamento do código. Por exemplo, podemos dizer que, quando tentamos dividir qualquer número com zero, ocorre um erro no tempo de execução. Esses erros são mais entediantes que os erros do compilador, pois, neste caso, precisamos corrigir o comportamento do código.

Tipo de compiladores C #

Os compiladores anteriores da Microsoft foram nomeados como .Net Framework como o compilador C # 2.0, o compilador C # 3.5, o compilador C # 4.x etc. Esses compiladores não foram escritos em C # ou podemos dizer que o C # não foi compilado pelo C #. Os outros compiladores que surgiram depois disso são:

1. Roslyn

Anteriormente, o compilador foi escrito em C / C ++. Roslyn é um compilador .net de código aberto no qual o código C ++ é substituído. Ele busca os tipos de elementos no código, sua relação um com o outro. Como as equipes de C # e VB escreveram o compilador, portanto, modelos de visual studio disponíveis para ambos. Ele nos permite escrever código que analisa um arquivo de origem e é fácil modificar o código-fonte.

A seguir, estão as quatro camadas de API do Roslyn

  • API de script: essa camada fornece um contexto de execução em tempo de execução e nos permite usar o C # como uma linguagem de script e não depende dos componentes do visual studio.
  • API do compilador: essa camada é usada para sintaxe e contém referências para assemblies e arquivos de código-fonte. Essa camada também não depende dos componentes do visual studio.
  • API de serviço: essa camada fornece IntelliSense, formatação, Localizar todas as referências etc. na parte superior do SDK. Também ajuda no gerenciamento de informações sobre o projeto e no gerenciamento de dependências do projeto.
  • API da área de trabalho: essa camada é principalmente para análise de código e refatoração por meio de IDEs. Roslyn facilita o código e consiste em um conjunto de APIs, como compilador e serviço, que fornece muitas funcionalidades, como formatação, Intellisense, etc. Ele fornece suporte a vários idiomas. As APIs da área de trabalho fornecem informações detalhadas sobre o código-fonte.

2. Compiladores Mono

Compilador C # mono com base nos padrões ECMA para C #. Possui várias versões com uma estrutura como C # 1.0, 2.0, 3.0, 4.0. O compilador mono mcs tem como alvo a estrutura 1.1, o gmcs tem como alvo a estrutura 2.0, enquanto smcs e dmcs têm como alvo a estrutura 2.1 e 4.0, respectivamente.

  • mcs: suporta todos os recursos do C # 1.1, como métodos anônimos, tipos anuláveis, buffers fixos, modificadores de acesso em propriedades, classes estáticas, etc.
  • gmcs : suporta recursos do C # 2.0, como expressões de consulta, inicializadores de objetos, métodos parciais, expressões lambda, propriedades implementadas automaticamente etc.
  • dmcs : suporta recursos do C # 4.0 que incluem argumentos nomeados, variação de tipo genérico, ligação dinâmica, etc.

O outro compilador, como o RemObjects C #, que segue o padrão C # de acordo com a especificação EMCA, além de que existem compiladores GNU C # que implementam C # e .Net.

Conclusão

O compilador C # é como qualquer outro compilador que compila código em código de máquina para que o processador possa entender o processo.

Artigo recomendado

Este foi um guia para a Data Mining Tool. Aqui discutimos uma introdução aos compiladores C # e diferentes tipos de compilador Just-in-Time e compiladores C #. Você também pode consultar nossos outros artigos sugeridos para saber mais -

  1. Compiladores Python
  2. Compiladores Java
  3. Melhores Compiladores C
  4. Melhores compiladores Java
  5. Guia para o Compilador PHP
  6. Modificadores de acesso em PHP