// Microsoft (R) .NET Framework IL Disassembler. Version 3.5.30729.1 // Copyright (c) Microsoft Corporation. All rights reserved. // Metadata version: v2.0.50727 .assembly extern mscorlib { .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. .ver 2:0:0:0 } .assembly '09.blocks' { // --- The following custom attribute is added automatically, do not uncomment ------- // .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 07 01 00 00 00 00 ) .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 ) .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx 63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 ) // ceptionThrows. .hash algorithm 0x00008004 .ver 0:0:0:0 } .module '09.blocks.exe' // MVID: {43A1CA42-C129-407C-81D8-EF713DDA907F} .imagebase 0x00400000 .file alignment 0x00000200 .stackreserve 0x00100000 .subsystem 0x0003 // WINDOWS_CUI .corflags 0x00000001 // ILONLY // Image base: 0x02F80000 // =============== CLASS MEMBERS DECLARATION =================== .class public auto ansi beforefieldinit Program extends [mscorlib]System.Object { .class auto ansi nested private beforefieldinit Inner extends [mscorlib]System.Object { .class auto ansi nested private beforefieldinit f_B extends [mscorlib]System.Object { .class auto ansi nested private beforefieldinit p_C extends [mscorlib]System.Object { .field private class Program/Inner/f_B outer .field private int32 v_C .method public hidebysig specialname rtspecialname instance void .ctor(class Program/Inner/f_B outer) cil managed { // Code size 24 (0x18) .maxstack 8 .language '{3F5162F8-07C6-11D3-9053-00C04FA302A1}', '{994B45C4-E6E9-11D2-903F-00C04FA302A1}', '{5A869D0B-6611-11D3-BD2A-0000F80849BD}' // Source File 'c:\Documents and Settings\dimok\Рабочий стол\Разработка компиляторов\!release\Samples\MSIL\decompiled\09.blocks.cs' //000057: int v_C = 0; IL_0000: ldarg.0 IL_0001: ldc.i4.0 IL_0002: stfld int32 Program/Inner/f_B/p_C::v_C //000058: //000059: public p_C(f_B outer) { IL_0007: ldarg.0 IL_0008: call instance void [mscorlib]System.Object::.ctor() IL_000d: nop IL_000e: nop //000060: this.outer = outer; IL_000f: ldarg.0 IL_0010: ldarg.1 IL_0011: stfld class Program/Inner/f_B Program/Inner/f_B/p_C::outer //000061: } IL_0016: nop IL_0017: ret } // end of method p_C::.ctor .method public hidebysig instance void Execute() cil managed { // Code size 55 (0x37) .maxstack 8 //000062: //000063: public void Execute() { IL_0000: nop //000064: outer.outer.v_A = 1; IL_0001: ldarg.0 IL_0002: ldfld class Program/Inner/f_B Program/Inner/f_B/p_C::outer IL_0007: ldfld class Program/Inner Program/Inner/f_B::outer IL_000c: ldc.i4.1 IL_000d: stfld int32 Program/Inner::v_A //000065: v_C = 1; IL_0012: ldarg.0 IL_0013: ldc.i4.1 IL_0014: stfld int32 Program/Inner/f_B/p_C::v_C //000066: outer.v_B = outer.p_B + v_C; IL_0019: ldarg.0 IL_001a: ldfld class Program/Inner/f_B Program/Inner/f_B/p_C::outer IL_001f: ldarg.0 IL_0020: ldfld class Program/Inner/f_B Program/Inner/f_B/p_C::outer IL_0025: ldfld int32 Program/Inner/f_B::p_B IL_002a: ldarg.0 IL_002b: ldfld int32 Program/Inner/f_B/p_C::v_C IL_0030: add IL_0031: stfld int32 Program/Inner/f_B::v_B //000067: } IL_0036: ret } // end of method p_C::Execute } // end of class p_C .field private class Program/Inner outer .field private int32 p_B .field private int32 v_B .method public hidebysig specialname rtspecialname instance void .ctor(class Program/Inner outer) cil managed { // Code size 24 (0x18) .maxstack 8 //000052: int v_B = 0; IL_0000: ldarg.0 IL_0001: ldc.i4.0 IL_0002: stfld int32 Program/Inner/f_B::v_B //000053: //000054: class p_C //000055: { //000056: f_B outer; //000057: int v_C = 0; //000058: //000059: public p_C(f_B outer) { //000060: this.outer = outer; //000061: } //000062: //000063: public void Execute() { //000064: outer.outer.v_A = 1; //000065: v_C = 1; //000066: outer.v_B = outer.p_B + v_C; //000067: } //000068: } //000069: //000070: public f_B(Inner outer) { IL_0007: ldarg.0 IL_0008: call instance void [mscorlib]System.Object::.ctor() IL_000d: nop IL_000e: nop //000071: this.outer = outer; IL_000f: ldarg.0 IL_0010: ldarg.1 IL_0011: stfld class Program/Inner Program/Inner/f_B::outer //000072: } IL_0016: nop IL_0017: ret } // end of method f_B::.ctor .method public hidebysig instance int32 Execute(int32 p_B) cil managed { // Code size 59 (0x3b) .maxstack 3 .locals init ([0] class Program/Inner/f_B/p_C p_C, [1] int32 CS$1$0000) //000073: //000074: public int Execute(int p_B) { IL_0000: nop //000075: this.p_B = p_B; IL_0001: ldarg.0 IL_0002: ldarg.1 IL_0003: stfld int32 Program/Inner/f_B::p_B //000076: p_C p_C = new p_C(this); IL_0008: ldarg.0 IL_0009: newobj instance void Program/Inner/f_B/p_C::.ctor(class Program/Inner/f_B) IL_000e: stloc.0 //000077: //000078: p_C.Execute(); IL_000f: ldloc.0 IL_0010: callvirt instance void Program/Inner/f_B/p_C::Execute() IL_0015: nop //000079: outer.v_A = outer.v_A + 3; IL_0016: ldarg.0 IL_0017: ldfld class Program/Inner Program/Inner/f_B::outer IL_001c: ldarg.0 IL_001d: ldfld class Program/Inner Program/Inner/f_B::outer IL_0022: ldfld int32 Program/Inner::v_A IL_0027: ldc.i4.3 IL_0028: add IL_0029: stfld int32 Program/Inner::v_A //000080: return v_B * 2; IL_002e: ldarg.0 IL_002f: ldfld int32 Program/Inner/f_B::v_B IL_0034: ldc.i4.2 IL_0035: mul IL_0036: stloc.1 IL_0037: br.s IL_0039 //000081: } IL_0039: ldloc.1 IL_003a: ret } // end of method f_B::Execute } // end of class f_B .field private int32 v_A .field private int32 v_A2 .method public hidebysig instance void Execute() cil managed { // Code size 69 (0x45) .maxstack 2 .locals init ([0] class Program/Inner/f_B f_B, [1] bool CS$4$0000) //000082: } //000083: //000084: public void Execute() { IL_0000: nop //000085: f_B f_B = new f_B(this); IL_0001: ldarg.0 IL_0002: newobj instance void Program/Inner/f_B::.ctor(class Program/Inner) IL_0007: stloc.0 //000086: //000087: v_A2=int.Parse(Console.ReadLine()); IL_0008: ldarg.0 IL_0009: call string [mscorlib]System.Console::ReadLine() IL_000e: call int32 [mscorlib]System.Int32::Parse(string) IL_0013: stfld int32 Program/Inner::v_A2 //000088: if(f_B.Execute(3) > v_A2) IL_0018: ldloc.0 IL_0019: ldc.i4.3 IL_001a: callvirt instance int32 Program/Inner/f_B::Execute(int32) IL_001f: ldarg.0 IL_0020: ldfld int32 Program/Inner::v_A2 IL_0025: cgt IL_0027: ldc.i4.0 IL_0028: ceq IL_002a: stloc.1 IL_002b: ldloc.1 IL_002c: brtrue.s IL_0038 //000089: Console.WriteLine(100); IL_002e: ldc.i4.s 100 IL_0030: call void [mscorlib]System.Console::WriteLine(int32) IL_0035: nop IL_0036: br.s IL_0044 //000090: else //000091: Console.WriteLine(v_A); IL_0038: ldarg.0 IL_0039: ldfld int32 Program/Inner::v_A IL_003e: call void [mscorlib]System.Console::WriteLine(int32) IL_0043: nop //000092: } IL_0044: ret } // end of method Inner::Execute .method public hidebysig specialname rtspecialname instance void .ctor() cil managed { // Code size 22 (0x16) .maxstack 8 //000045: int v_A = 0; IL_0000: ldarg.0 IL_0001: ldc.i4.0 IL_0002: stfld int32 Program/Inner::v_A //000046: int v_A2 = 0; IL_0007: ldarg.0 IL_0008: ldc.i4.0 IL_0009: stfld int32 Program/Inner::v_A2 IL_000e: ldarg.0 IL_000f: call instance void [mscorlib]System.Object::.ctor() IL_0014: nop IL_0015: ret } // end of method Inner::.ctor } // end of class Inner .method public hidebysig static void Main(string[] agrs) cil managed { .entrypoint // Code size 15 (0xf) .maxstack 1 .locals init ([0] class Program/Inner Inner) //000047: //000048: class f_B //000049: { //000050: Inner outer; //000051: int p_B; //000052: int v_B = 0; //000053: //000054: class p_C //000055: { //000056: f_B outer; //000057: int v_C = 0; //000058: //000059: public p_C(f_B outer) { //000060: this.outer = outer; //000061: } //000062: //000063: public void Execute() { //000064: outer.outer.v_A = 1; //000065: v_C = 1; //000066: outer.v_B = outer.p_B + v_C; //000067: } //000068: } //000069: //000070: public f_B(Inner outer) { //000071: this.outer = outer; //000072: } //000073: //000074: public int Execute(int p_B) { //000075: this.p_B = p_B; //000076: p_C p_C = new p_C(this); //000077: //000078: p_C.Execute(); //000079: outer.v_A = outer.v_A + 3; //000080: return v_B * 2; //000081: } //000082: } //000083: //000084: public void Execute() { //000085: f_B f_B = new f_B(this); //000086: //000087: v_A2=int.Parse(Console.ReadLine()); //000088: if(f_B.Execute(3) > v_A2) //000089: Console.WriteLine(100); //000090: else //000091: Console.WriteLine(v_A); //000092: } //000093: } //000094: //000095: public static void Main(string[] agrs) { IL_0000: nop //000096: Inner Inner = new Inner(); IL_0001: newobj instance void Program/Inner::.ctor() IL_0006: stloc.0 //000097: Inner.Execute(); IL_0007: ldloc.0 IL_0008: callvirt instance void Program/Inner::Execute() IL_000d: nop //000098: } IL_000e: ret } // end of method Program::Main .method public hidebysig specialname rtspecialname instance void .ctor() cil managed { // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 IL_0001: call instance void [mscorlib]System.Object::.ctor() IL_0006: ret } // end of method Program::.ctor } // end of class Program // ============================================================= // *********** DISASSEMBLY COMPLETE *********************** // WARNING: Created Win32 resource file 09.blocks.ilasm.res