.Net рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг

рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЫрд╛рддреНрд░ рд╡рд░реНрд╖реЛрдВ рдФрд░ dllmain рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ - рдХреНрдпрд╛ рдиреЗрдЯ рдореЗрдВ рднреА рдРрд╕рд╛ рд╣реА рдХреБрдЫ рд╣реИ?
рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдЗрд╕ рдкрд░рд┐рд╡рд╛рд░ рдХреА рд╕рднреА рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИред рдпрд╣ рдкреЛрд╕реНрдЯ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд (рд▓реЗрдХрд┐рди рд╕реВрдЪрдирд╛рддреНрдордХ) рд▓реЗрдЦ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╣реИред


рд╕реАрдПрд▓рдЖрд░ рд╕рдВрд╕реНрдХрд░рдг 1.0 рдФрд░ 1.1 рдореЗрдВред рдЯрд╛рдЗрдк рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред рдХрдИ рд▓реЛрдЧ рдЙрдирд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдХреЗрд╡рд▓ ECMA-335: CLR рдзрд╛рд░рд╛ 2 рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдФрд░ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдирд┐рдЪреЛрдбрд╝ рдкреНрд░рджрд╛рди рдХрд░реВрдВрдЧрд╛:

рдПрдХ рдкреНрд░рдХрд╛рд░ (рд╡рд░реНрдЧ, рдЗрдВрдЯрд░рдлрд╝реЗрд╕, рдорд╛рди рдкреНрд░рдХрд╛рд░) рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдзрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕реЗ рдЯрд╛рдЗрдк рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрд╡рдпрдВ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЙрд╕реА рд╕рдордп, рдЗрд╕реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдкрд╣рд▓реА рдХреЙрд▓ рдкрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдирд╣реАрдВ - рд▓рдЧрднрдЧ рдЕрдиреБрд╡рд╛рджред ) рд╡рд┐рдзрд┐ рд╕реНрдерд┐рд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, 0 рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ рдФрд░ рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реИ, рдЗрд╕реЗ rtspecialname рдФрд░ specialname рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЗрд╕реЗ .cctor рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд┐рд▓реНрдбрд░реЛрдВ рдХреА рддрд░рд╣, рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕реНрдерд┐рд░ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдЗрдирдЯрд╛рдЗрдЯрд▓реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред

.class public EngineeringData extends [mscorlib]System.Object { .field private static initonly float64[] coefficient .method private specialname rtspecialname static void .cctor() cil managed { .maxstack 1 // allocate array of 4 Double ldc.i4.4 newarr [mscorlib]System.Double // point initonly field to new array stsfld float64[] EngineeringData::coefficient // code to initialize array elements goes here ret } } 


рдЯрд┐рдкреНрдкрдгреА
рдЯрд╛рдЗрдк рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдЖрдорддреМрд░ рдкрд░ рдРрд╕реА рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ рдЬреЛ рдЦреЗрддреЛрдВ рдХреЛ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд╕рд╛рде рдпрд╛ рд╕рд░рд▓ рдЧрдгрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд░рдВрдн рдХрд░рддреА рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдХреЛрдб рдкрд░ рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИрдВред


рд╕реАрдПрд▓рдЖрд░ рд╕рдВрд╕реНрдХрд░рдг 2.0, рдмрджрд▓реЗ рдореЗрдВ, рдореЙрдбреНрдпреВрд▓рд░ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╡реЗ рдЯрд╛рдЗрдк рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ, рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдореЙрдбреНрдпреВрд▓ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рди рдХрд┐ рдкреНрд░рдХрд╛рд░ред рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╕реЗ рд╕рдВрдмрджреНрдз рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдХрд╛рд░реНрдп рд╣реИред

рдореЙрдбреНрдпреВрд▓ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдХрд╛ рд╡рд┐рд╡рд░рдг:

рдПрдХ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдзрд┐ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрд┐рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реНрд╡рдпрдВ-рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдХ рдЗрдирд┐рд▓рд╛рдЗрдЬрд╝рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рдзрд┐ рд╕реНрдерд┐рд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдПрдХ рд╕рджрд╕реНрдп, 0 рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЗрдВ, рдХреЛрдИ рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реИ, рдЗрд╕реЗ rtspecialname рдФрд░ specialname рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдФрд░ рдЗрд╕рдХрд╛ рдирд╛рдо .cctor рд╣реИред
рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдХреЛрдб рдкрд░ рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИрдВред рдореЙрдбреНрдпреВрд▓ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдФрд░ рдЕрдирд╡рд╛рдВрдЯреЗрдб рдХреЛрдб рджреЛрдиреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред

рдореЙрдбреНрдпреВрд▓ рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЧрд╛рд░рдВрдЯреА
  1. рдореЙрдбреНрдпреВрд▓ рдЗрдирд┐рд▓рд╛рдЗрдЬрд╝рд░ рдХреЛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рджреМрд░рд╛рди рдЯрд╛рдЗрдк, рд╡рд┐рдзрд┐рдпреЛрдВ рдпрд╛ рдбреЗрдЯрд╛ рдкрд░ рдкрд╣рд▓реА рдХреЙрд▓ рдХреЗ рджреМрд░рд╛рди рдпрд╛ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИред
  2. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдХреА рд╕реНрдкрд╖реНрдЯ рдХреЙрд▓ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде, рдореЙрдбреНрдпреВрд▓ рдЗрдирд┐рд╢рд▓рд╛рдЗрдЬрд╝рд░ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
  3. рдореЙрдбреНрдпреВрд▓ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд░реВрдк рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдореЙрдбреНрдпреВрд▓ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдЕрдВрдд рддрдХ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдШреЛрд╖рд┐рдд рдбреЗрдЯрд╛, рд╡рд┐рдзрд┐рдпреЛрдВ рдпрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИред

рдХреНрдпреЛрдВрдХрд┐ C # рдореЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ MSDN VC ++ рдЪреИрдЯ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ, C ++ / CLI рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред ( C ++ / CLI рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ MSDN VC ++ рдЪреИрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИред )

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб msvcm80.dll рдореЙрдбреНрдпреВрд▓ рдХреЗ ildasm рдореЗрдВ рдПрдХ рдЕрдкрдШрдЯрдиреА рд╣реИ:

 .method assembly specialname rtspecialname static void .cctor() cil managed { .custom instance void [mscorlib]System.Diagnostics.DebuggerStepThroughAttribute::.ctor() = ( 01 00 00 00 ) // Code size 39 (0x27) .maxstack 2 .locals ([0] valuetype '<CrtImplementationDetails>'.LanguageSupport languageSupport) IL_0000: ldloca.s languageSupport IL_0002: call valuetype '<CrtImplementationDetails>'.LanguageSupport* modopt([mscorlib]System.Runtime.CompilerServices.CallConvThiscall) '<CrtImplementationDetails>.LanguageSupport.{ctor}'(valuetype '<CrtImplementationDetails>'.LanguageSupport* modopt([mscorlib]System.Runtime.CompilerServices.IsConst) modopt([mscorlib]System.Runtime.CompilerServices.IsConst)) IL_0007: pop .try { IL_0008: ldloca.s languageSupport IL_000a: call void modopt([mscorlib]System.Runtime.CompilerServices.CallConvThiscall) '<CrtImplementationDetails>.LanguageSupport.Initialize'(valuetype '<CrtImplementationDetails>'.LanguageSupport* modopt([mscorlib]System.Runtime.CompilerServices.IsConst) modopt([mscorlib]System.Runtime.CompilerServices.IsConst)) IL_000f: leave.s IL_001f } // end .try fault { IL_0011: ldftn void modopt([mscorlib]System.Runtime.CompilerServices.CallConvThiscall) '<CrtImplementationDetails>.LanguageSupport.{dtor}'(valuetype '<CrtImplementationDetails>'.LanguageSupport* modopt([mscorlib]System.Runtime.CompilerServices.IsConst) modopt([mscorlib]System.Runtime.CompilerServices.IsConst)) IL_0017: ldloca.s languageSupport IL_0019: call void ___CxxCallUnwindDtor(method void *(void*), void*) IL_001e: endfinally } // end handler IL_001f: ldloca.s languageSupport IL_0021: call void modopt([mscorlib]System.Runtime.CompilerServices.CallConvThiscall) 'gcroot<System::String ^>.{dtor}'(valuetype 'gcroot<System::String ^>'* modopt([mscorlib]System.Runtime.CompilerServices.IsConst) modopt([mscorlib]System.Runtime.CompilerServices.IsConst)) IL_0026: ret } // end of method 'Global Functions'::.cctor 

Source: https://habr.com/ru/post/In175185/


All Articles