Linguagem Intermediária Comum
Common Intermediate Language (CIL, pronunciado "sil" ou "kil") (anteriormente chamado de Microsoft Intermediate Language ou MSIL) é a linguagem de programação legível por humanos de nível mais baixo na Common Language Infrastructure e no .NET Framework . As linguagens .NET Framework compilam para CIL. CIL é uma linguagem assembly orientada a objetos e é baseada em pilhas . É executado por uma máquina virtual . As principais linguagens .NET são C# , Visual Basic .NET , C++/CLI e J# .
A CIL era originalmente conhecida como Microsoft Intermediate Language (MSIL) durante as versões de teste das linguagens .NET. Por causa disso, o CIL é frequentemente chamado de MSIL. É possível executar esta linguagem em plataformas GNU/Linux graças ao Mono Project , que implementa uma máquina virtual semelhante ao .NET mas em software livre.
Informações gerais
Durante a compilação de linguagens de programação .NET , o código-fonte é convertido em código CIL em vez de código objeto específico da plataforma ou do processador . CIL é um conjunto de instruções independente de plataforma que pode ser executado em qualquer CPU.
Instruções CIL
O código intermediário CIL inclui um conjunto de instruções para os seguintes grupos de tarefas:
- carregamento e armazenamento
- aritmética
- Conversão de tipo
- Criação e manipulação de objetos
- Operadores de pilha (push/pop)
- Transferência de controle (saltos)
- Invocação e retorno do método
- manipulação de exceção
- Simultaneidade baseada em monitor
Compilação em tempo de execução
A compilação just -in-time (JIT) envolve a conversão de código intermediário em código imediatamente executável pela CPU . A conversão é feita gradualmente durante a execução do programa. A compilação JIT fornece otimização específica do ambiente, segurança de tipo de tempo de execução e verificação de montagem. Para fazer isso, o compilador JIT examina os metadados do assembly para acesso ilegal e trata as violações adequadamente.
Gerador de imagens nativas
O gerador de imagem nativa (NGEN) produz uma imagem binária nativa para o ambiente atual. O bytecode é omitido inteiramente ou convertido em instruções nativas da CPU antes da execução. Isso elimina a sobrecarga do JIT em detrimento da portabilidade; Quando uma imagem gerada pelo NGEN é executada em um ambiente sem suporte, o .NET framework usará automaticamente o compilador JIT.
O NGEN visa tornar a execução do assembly mais rápida, eliminando o processo de compilação JIT em tempo de execução, mas em alguns casos, isso tem efeitos adversos devido à otimização feita pelo otimizador JIT. Devido a este fato, sugere-se usar o NGEN somente após medir o desempenho do aplicativo antes e depois de usá-lo.
Compilando para .NET Native na nuvem
A partir de abril de 2014, a Microsoft começou a desenvolver a tecnologia de nuvem necessária para que todos os aplicativos em sua Universal App Store fossem compilados usando .NET Native para código nativo por dispositivo. [ 1 ] Isso melhorará muito o desempenho dos Aplicativos Universais no Windows 10 para telefones e PCs, permitindo que eles abram e retomem 60% mais rápido e usem 20% menos memória, permitindo tempos de resposta do sistema mais rápidos. [ 2 ]
Isso melhorará tremendamente o desempenho, especialmente em dispositivos onde o consumo de memória e processador é crítico, como dispositivos que atualmente executam o Windows Phone 8.1 que serão atualizados para o Windows 10 Mobile no final de 2015. [ 3 ]
Metadados
Os metadados são informações sobre as classes compiladas. Como os tipos de biblioteca no Component Object Model , ele permite que os aplicativos forneçam e descubram interfaces, classes, tipos, métodos e campos no assembly. O processo de leitura de metadados é chamado de reflexão .
Execução CIL
- O código-fonte é convertido em Common Intermediate Language e um assembly .NET é criado.
- Até a execução de um assembly .NET, seu CIL é passado pelo compilador JIT do Common Language Runtime para gerar o código nativo. (A compilação NGEN remove esta etapa em tempo de execução.)
- O código nativo é executado pelo processador do computador.
Referências
- ↑ "Por dentro do .NET Native " . Canal 9. 2 de abril de 2014 . Recuperado em 13 de outubro de 2015 .
- ↑ "Microsoft .NET Native" (em inglês) . Microsoft. 10 de julho de 2015 . Recuperado em 13 de outubro de 2015 .
- ^ "A atualização para o Windows 10 Mobile chegaria em novembro segundo Lumia Espanha" . Microsoft Insider. 8 de outubro de 2015 . Recuperado em 13 de outubro de 2015 .