Início > .NET > Compilação, JIT e MSIL

Compilação, JIT e MSIL

Vamos entender um pouco mais sobre o mecanismo de geração de código no .NET Framework.

O fluxo de compilação de um programa escrito em C#, ou em outra linguagem suportada pelo .NET Framework, segue o seguinte esquema:

compilation

Na primeira parte do processo de compilação, o código escrito em Linguagem de Alto-nível é compilado para uma Linguagem Intermediária: a Microsoft Intermediate Language (MSIL), que é semelhante ao Assembly x86.

Na segunda parte da compilação (que ocorre na primeira execução do código-programa), a CLR chama o JIT (Compilador Just-in-time), que compila o código MSIL para código de máquina. E assim, para o código não precisa ser compilado para as demais execuções.

Dessa forma, apenas máquinas que possuem a CLR podem executar o código gerado pelo JIT. Esse código é chamado de gerenciado, porque a CLR cuida de atividades que seriam de obrigação do programador (alocação e liberação de memória, por exexmplo). Já o código não-gerenciado é compilado diretamente para a linguagem de máquina, não necessitando da CLR para executar.

O JIT também provê uma otimização no código gerado, compilando apenas o código que é realmente necessário para a execução do programa, reduzindo o tamanho do arquivo-final (.dll ou .exe).

Quando o compilador produz código MSIL, ele também produz Metadados, que descrevem as definições de tipo, declarações de membros, referências à bibliotecas e outros dados utilizados pelo programa. O conjunto MSIL + Metadados forma um arquivo Portable Executable (PE).

A ferramenta MSIL Assembler (Ilasm.exe) gera um arquivo PE. Já o MSIL Disassembler (Ildasm.exe) converte um arquivo PE em um arquivo texto que contém o código MSIL gerado.

Para mais informações sobre MSIL, JIT, Ilasm e Ildasm, veja:

http://msdn.microsoft.com/en-US/library/c5tkafs1%28v=VS.90%29.aspx

http://msdn.microsoft.com/en-US/library/496e4ekx%28v=VS.90%29.aspx

http://msdn.microsoft.com/en-US/library/f7dy01k1%28v=VS.90%29.aspx

Anúncios
Categorias:.NET
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: