Intermediate Language (IL), также известный как Common Intermediate Language (CIL) — низкоуровневый язык программирования, разработанный компанией Microsoft. Этот язык, являющийся неотъемлемой частью архитектуры Common Language Runtime (CLR), служит посредником между кодом высокого уровня, написанным разработчиком, и машинным кодом, который исполняется процессором.
Рассмотрим этапы компиляции, через которые проходят .NET приложения.
Использование механизма промежуточного кода обладает следующими преимуществами:
Рассмотрим пример IL-кода для простейшей C# программы:
class Program
{
public static void Main()
{
Console.WriteLine("Hello World!");
}
}
IL-код будет выглядеть следующим образом, но может отличаться в зависимости от версии .NET:
.class private auto ansi beforefieldinit Program
extends [System.Runtime]System.Object
{
.method public hidebysig static void Main() cil managed
{
.entrypoint
// Code size 13 (0xd)
.maxstack 8
IL_0000: nop
IL_0001: ldstr "Hello World!"
IL_0006: call void [System.Console]System.Console::WriteLine(string)
IL_000b: nop
IL_000c: ret
} // end of method Program::Main
.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
// Code size 8 (0x8)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void [System.Runtime]System.Object::.ctor()
IL_0006: nop
IL_0007: ret
} // end of method Program::.ctor
} // end of class Program
Также IL-код помогает в понимании неочевидных тонкостей языка. Пример использования IL-кода: "Хорошо ли вы помните nullable value types? Заглядываем "под капот"" и "Всегда ли в C# есть упаковка при конкатенации со строкой и интерполяции?".
0