Microsoft Intermediate Language

Материал из Seo Wiki - Поисковая Оптимизация и Программирование
Перейти к навигацииПерейти к поиску

Microsoft Intermediate Language, сокращенно MSIL — промежуточный язык, разработанный фирмой Microsoft для платформы .NET Framework. JIT-компилятор MSIL является частью так называемой CLR (англ. Common Language Runtime) — общей среды выполнения языков .NET.

В код на языке MSIL должны переводить код на языках высокого уровня все компиляторы, обеспечивающие поддержку платформы .NET. Код на MSIL генерируют, в частности, все компиляторы для платформы .NET самой фирмы Майкрософт, входящие в среду разработки Visual Studio (C#, Managed C++, Visual Basic .NET, Visual J# .NET).

Язык MSIL по синтаксису и мнемонике напоминает язык ассемблера. Его можно рассматривать как ассемблер виртуальной машины .NET. В то же время язык MSIL содержит некоторые достаточно высокоуровневые конструкции, повышающие его уровень по сравнению с ассемблером для любой реально существующей машины, и писать код непосредственно на MSIL легче, чем на ассемблере для реальных машин. Поэтому его можно рассматривать как своеобразный «высокоуровневый ассемблер».

Язык MSIL также нередко называют просто IL (англ. Intermediate Language), то есть просто «промежуточный язык».

Синтаксис и мнемоника языка MSIL описываются спецификацией CIL (англ. Common Intermediate Language) — открытой спецификацией общего промежуточного языка. Спецификация CIL является составной частью более общей спецификации CLI (англ. Common Language Infrastructure).

Пример кода

Это пример постейшей программы Hello, World , написанной на CIL. Она выводит строку "Hello, world!".

<source lang="cil"> .assembly Hello {} .method public static void Main() cil managed {

    .entrypoint
    .maxstack 1
    ldstr "Hello, world!"
    call void [mscorlib]System.Console::WriteLine(string)
    ret

} </source>

Это ещё одна программа(на C#), <source lang="csharp"> static void Main(string[] args) { outer:

   for (int i = 2; i < 1000; i++)
   {
        for (int j = 2; j < i; j++)
        {
             if (i % j == 0)
                  goto outer;
        }
        Console.WriteLine(i);
    }

} </source>

которая на CIL выглядит так:

<source lang="cil"> .method private hidebysig static void Main(string[] args) cil managed {

   .entrypoint
   .maxstack 2
   .locals init (
       [0] int32 num,
       [1] int32 num2,
       [2] bool flag)
   L_0000: nop 
   L_0001: ldc.i4.2 
   L_0002: stloc.0 
   L_0003: br.s L_0033
   L_0005: nop 
   L_0006: ldc.i4.2 
   L_0007: stloc.1 
   L_0008: br.s L_001f
   L_000a: nop 
   L_000b: ldloc.0 
   L_000c: ldloc.1 
   L_000d: rem 
   L_000e: ldc.i4.0 
   L_000f: ceq 
   L_0011: ldc.i4.0 
   L_0012: ceq 
   L_0014: stloc.2 
   L_0015: ldloc.2 
   L_0016: brtrue.s L_001a
   L_0018: br.s L_0001
   L_001a: nop 
   L_001b: ldloc.1 
   L_001c: ldc.i4.1 
   L_001d: add 
   L_001e: stloc.1 
   L_001f: ldloc.1 
   L_0020: ldloc.0 
   L_0021: clt 
   L_0023: stloc.2 
   L_0024: ldloc.2 
   L_0025: brtrue.s L_000a
   L_0027: ldloc.0 
   L_0028: call void [mscorlib]System.Console::WriteLine(int32)
   L_002d: nop 
   L_002e: nop 
   L_002f: ldloc.0 
   L_0030: ldc.i4.1 
   L_0031: add 
   L_0032: stloc.0 
   L_0033: ldloc.0 
   L_0034: ldc.i4 1000
   L_0039: clt 
   L_003b: stloc.2 
   L_003c: ldloc.2 
   L_003d: brtrue.s L_0005
   L_003f: ret 

} </source>



da:Common Intermediate Language de:Common Intermediate Language en:Common Intermediate Language es:Common Intermediate Language fa:زبان میانی مایکروسافت fr:Common Intermediate Language he:CIL hu:Common Intermediate Language id:Microsoft Intermediate Language it:Common Intermediate Language ja:共通中間言語 pl:Common Intermediate Language sv:Common Intermediate Language zh:微软中间语言

Если вам нравится SbUP.com Сайт, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....