Common Intermediate Language и системное программирование в Microsoft.Net. Макаров А.В - 157 стр.

UptoLike

0x17, /* IL_0016: ldc.i4.1 */
0x0A, /* IL_0017: stloc.0 */
0x2B, 0x0C, /* IL_0018: br.s IL_0026 */
0x16, /* IL_001a: ldc.i4.0 */
0x0A, /* IL_001b: stloc.0 */
0x2B, 0x08, /* IL_001c: br.s IL_0026 */
0x17, /* IL_001e: ldc.i4.1 */
0x0A, /* IL_001f: stloc.0 */
0x2B, 0x04, /* IL_0020: br.s IL_0026 */
0x16, /* IL_0022: ldc.i4.0 */
0x0A, /* IL_0023: stloc.0 */
0x2B, 0x00, /* IL_0024: br.s IL_0026 */
0x06, /* IL_0026: ldloc.0 */
0x2A /* IL_0027: ret */
};
#endregion
}
Исходный код программы CilCodec
301
0x02, /* IL_0018: ldarg.0 */
0x5A, /* IL_0019: mul */
0x0A, /* IL_001a: stloc.0 */
0x2B, 0x0A, /* IL_001b: br.s IL_0027 */
0x03, /* IL_001d: ldarg.1 */
0x18, /* IL_001e: ldc.i4.2 */
0x5B, /* IL_001f: div */
0x10, 0x01, /* IL_0020: starg.s 1 */
0x02, /* IL_0022: ldarg.0 */
0x02, /* IL_0023: ldarg.0 */
0x5A, /* IL_0024: mul */
0x10, 0x00, /* IL_0025: starg.s 0 */
0x03, /* IL_0027: ldarg.1 */
0x2D, 0xE2, /* IL_0028: brtrue.s IL_000c */
0x2B, 0x0C, /* IL_002a: br.s IL_0038 */
0x06, /* IL_002c: ldloc.0 */
0x23, 0, 0, 0, 0, 0, 0, 0x24, 0x40,
/* IL_002d: ldc.r8 10. */
0x5B, /* IL_0036: div */
0x0A, /* IL_0037: stloc.0 */
0x06, /* IL_0038: ldloc.0 */
0x23, 0, 0, 0, 0, 0, 0, 0x14, 0x40,
/* IL_0039: ldc.r8 5. */
0x30, 0xE8, /* IL_0042: bgt.s IL_002c */
0x06, /* IL_0044: ldloc.0 */
0x0B, /* IL_0045: stloc.1 */
0x2B, 0x00, /* IL_0046: br.s IL_0048 */
0x07, /* IL_0048: ldloc.1 */
0x2A /* IL_0049: ret */
};
static byte[] test2 = new byte[]
{
0x02, /* IL_0000: ldarg.0 */
0x0B, /* IL_0001: stloc.1 */
0x07, /* IL_0002: ldloc.1 */
0x45, 0x03, 0, 0, 0,
/* IL_0003: switch ( */
0x02, 0, 0, 0, /* IL_0016, */
0x06, 0, 0, 0, /* IL_001a, */
0x0A, 0, 0, 0, /* IL_001e) */
0x2B, 0x0C, /* IL_0014: br.s IL_0022 */
300
CIL и системное программирование в Microsoft .NET
300                              CIL и системное программирование в Microsoft .NET   Исходный код программы CilCodec                                       301


           0x02,              /* IL_0018: ldarg.0               */                                 0x17,           /*   IL_0016:   ldc.i4.1           */
           0x5A,              /* IL_0019: mul                   */                                 0x0A,           /*   IL_0017:   stloc.0            */
           0x0A,              /* IL_001a: stloc.0               */                                 0x2B,   0x0C,   /*   IL_0018:   br.s     IL_0026   */
           0x2B,   0x0A,      /* IL_001b: br.s     IL_0027      */                                 0x16,           /*   IL_001a:   ldc.i4.0           */
           0x03,              /* IL_001d: ldarg.1               */                                 0x0A,           /*   IL_001b:   stloc.0            */
           0x18,              /* IL_001e: ldc.i4.2              */                                 0x2B,   0x08,   /*   IL_001c:   br.s     IL_0026   */
           0x5B,              /* IL_001f: div                   */                                 0x17,           /*   IL_001e:   ldc.i4.1           */
           0x10,   0x01,      /* IL_0020: starg.s 1             */                                 0x0A,           /*   IL_001f:   stloc.0            */
           0x02,              /* IL_0022: ldarg.0               */                                 0x2B,   0x04,   /*   IL_0020:   br.s     IL_0026   */
           0x02,              /* IL_0023: ldarg.0               */                                 0x16,           /*   IL_0022:   ldc.i4.0           */
           0x5A,              /* IL_0024: mul                   */                                 0x0A,           /*   IL_0023:   stloc.0            */
           0x10,   0x00,      /* IL_0025: starg.s 0             */                                 0x2B,   0x00,   /*   IL_0024:   br.s     IL_0026   */
           0x03,              /* IL_0027: ldarg.1               */                                 0x06,           /*   IL_0026:   ldloc.0            */
           0x2D,   0xE2,      /* IL_0028: brtrue.s IL_000c      */                                 0x2A            /*   IL_0027:   ret                */
           0x2B,   0x0C,      /* IL_002a: br.s     IL_0038      */                            };
           0x06,              /* IL_002c: ldloc.0               */
           0x23,   0, 0,   0, 0, 0, 0, 0x24, 0x40,                                            #endregion
                              /* IL_002d: ldc.r8    10.         */                        }
           0x5B,              /* IL_0036: div                   */
           0x0A,              /* IL_0037: stloc.0               */
           0x06,              /* IL_0038: ldloc.0               */
           0x23, 0, 0,     0, 0, 0, 0, 0x14, 0x40,
                              /* IL_0039: ldc.r8    5.          */
           0x30, 0xE8,        /* IL_0042: bgt.s    IL_002c      */
           0x06,              /* IL_0044: ldloc.0               */
           0x0B,              /* IL_0045: stloc.1               */
           0x2B, 0x00,        /* IL_0046: br.s     IL_0048      */
           0x07,              /* IL_0048: ldloc.1               */
           0x2A               /* IL_0049: ret                   */
      };

      static byte[] test2 = new byte[]
      {
         0x02,          /* IL_0000: ldarg.0                     */
         0x0B,          /* IL_0001: stloc.1                     */
         0x07,          /* IL_0002: ldloc.1                     */
         0x45, 0x03, 0, 0, 0,
                        /* IL_0003: switch      (               */
         0x02, 0, 0, 0, /*        IL_0016,                      */
         0x06, 0, 0, 0, /*        IL_001a,                      */
         0x0A, 0, 0, 0, /*        IL_001e)                      */
         0x2B, 0x0C,    /* IL_0014: br.s    IL_0022             */