Π₯ΠΎΡΡ Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π»ΠΈΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΡΡ ΡΡΡΠΎΠΈΡΡ ΡΠ²ΠΎΠΈ .NET-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π½Π° ΡΠ·ΡΠΊΠ΅ CIL, ΡΠ·ΡΠΊ CIL ΡΠ°ΠΌ ΠΏΠΎ ΡΠ΅Π±Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ Π΄Π»Ρ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΡΠ΅ΠΌ Π»ΡΡΡΠ΅ Π²Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΡ CIL, ΡΠ΅ΠΌ ΡΠ²Π΅ΡΠ΅Π½Π½Π΅Π΅ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΡΠ΅Π±Ρ ΡΡΠ²ΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΠΌΠΈΡΠ΅ Π½Π΅ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΈΠ΅ΠΌΠΎΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ .NET. ΠΡΠ»ΠΈ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ, ΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ, ΠΎΠ±Π»Π°Π΄Π°ΡΡΠΈΠΉ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ ΡΠ·ΡΠΊΠ° CIL, ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅.
β’ ΠΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ .NET ΠΏΡΠΎΠ΅ΡΠΈΡΡΡΡ ΡΠ²ΠΎΠΈ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π° Π² Π»Π΅ΠΊΡΠ΅ΠΌΡ CIL.
β’ ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄Π΅Π·Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΎΠ² .NET, ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° CIL ΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΠΉ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄ .NET
β’ ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ System.RefleΡtion.Emit.
β’ ΠcΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ CTS (Common Type System β ΠΎΠ±ΡΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΈΠΏΠΎΠ²), ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ, Π½ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ CIL. Π―Π·ΡΠΊ CIL ΡΠ²Π»ΡΠ΅ΡΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ .NET, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊΠΎ Π²ΡΠ΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌ CTS.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ CIL, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠ»Π΅Π½Ρ ΠΈ ΠΏΠΎΠ»Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ (ΡΡΠΎ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ Π² C#).
Π‘Π½ΠΎΠ²Π° Π·Π°ΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎΠ±Ρ Π±ΡΠ»ΠΎ ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ΠΎ ΡΡΠ½ΠΎ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ³Π»ΡΠ±Π»ΡΡΡΡΡ Π² Π΄Π΅ΡΠ°Π»ΠΈ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° CIL, Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΠΏΠΎΠ»Π½Π΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΡΠ²ΠΎΠ΅Π½ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π±Π°Π·ΠΎΠ²ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² .NET. ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡΡ ΡΠΎΠ»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠ·ΡΠΊΠ° CIL Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Π° ΡΠΎΠ»ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠ·ΡΠΊΠ° Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΌ C(++). Π’Π΅ΠΌ, ΠΊΡΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΏΡΠΎΡΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡ Ρ ΠΈΡΡΠΎΡΠΌΠ½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ»ΠΎΠΆΠ½ΡΡ Π·Π°Π΄Π°Ρ Ρ ΡΡΠ΅ΡΠΎΠΌ ΡΠΎΠ½ΠΊΠΈΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΡΡΠ΅Π΄Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ (ΠΈ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ). Π’Π°ΠΊ ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Π³ΠΎΡΠΎΠ²Ρ ΠΏΡΠΈΠ½ΡΡΡ Π²ΡΠ·ΠΎΠ², Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΈΡΡΡΠΏΠΈΠΌ ΠΊ. ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ CIL.
ΠΠ°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ Π² Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Π΅ Π½Π΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ Π²ΡΠ΅ΡΡΠΎΡΠΎΠ½Π½Π΅Π΅ ΠΈ ΠΈΡΡΠ΅ΡΠΏΡΠ²Π°ΡΡΠ΅Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΠΈ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΈ CIL. ΠΡΠ»ΠΈ Π²Π°ΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΡΠ΅ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ CIL, ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ ΠΊ ΠΊΠ½ΠΈΠ³Π΅ Jason Bock, CIL Programming: Under the Hood of .NET (Apress, 2002).
ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ, Π°ΡΡΠΈΠ±ΡΡΡ ΠΈ ΠΊΠΎΠ΄Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ CIL
Π Π½Π°ΡΠ°Π»Π΅ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ, ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ CIL, Π²Ρ Π½Π΅ΠΏΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΠ΅ Π½ΠΎΠ²ΡΠ΅ Π΄Π»Ρ ΡΠ΅Π±Ρ (Π° ΡΠ°ΡΡΠΎ ΠΈ ΠΊΠ°ΠΆΡΡΠΈΠ΅ΡΡ Π½Π΅Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌΠΈ) ΠΈΠΌΠ΅Π½Π° Π΄Π»Ρ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΈΠ²ΡΡΠ½ΡΡ ΠΏΠΎΠ½ΡΡΠΈΠΉ. Π Π°ΡΡΠΌΠΎΡΡΠΈΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π½Π°Π±ΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
{new, public, this, base, get, set, explicit, unsafe, enum, operator, partial}
ΠΡ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅ΡΠ΅ ΠΈΡ , ΠΊΠ°ΠΊ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π° ΡΠ·ΡΠΊΠ° C# (ΠΈ ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ). ΠΠΎ Π΅ΡΠ»ΠΈ ΠΏΡΠΈΡΠΌΠΎΡΡΠ΅ΡΡΡΡ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΡΡΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° Π±ΠΎΠ»Π΅Π΅ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Ρ ΠΎΡΡ Π·Π΄Π΅ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ C#, ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΡΠ°Π·Π½ΡΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ enum ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΈΠΏ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΠΉ ΠΎΡ System.Enum, Π° ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π° this ΠΈ base ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΡΡΠ»Π°ΡΡΡΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π½Π° ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈΠ»ΠΈ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠ»Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ unsafe ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π±Π»ΠΎΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ Π²ΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ ΡΡΠ΅Π΄ΠΎΠΉ CLR, Π° ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ operator ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΠΊΡΡΡΡΠΉ (ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠΉ) ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΠ΅ Π·Π°Π΄Π°Π½Π½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ C# (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π½Π°ΠΊ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ).
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΠ°ΠΊΠΎΠ³ΠΎ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°, ΠΊΠ°ΠΊ C#, ΡΠ·ΡΠΊ CIL Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ»ΠΎΠ². ΠΠ°Π±ΠΎΡ Π»Π΅ΠΊΡΠ΅ΠΌ, ΠΏΠΎΠ½ΡΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ CIL, ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΡΡΡ Π½Π° ΡΡΠΈ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΡΠ΅ΠΊΡΡΠ°:
β’ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ CIL;
β’ Π°ΡΡΠΈΠ±ΡΡΡ CIL;
β’ ΠΊΠΎΠ΄Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ CIL.
ΠΠ°ΠΆΠ΄Π°Ρ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ Π»Π΅ΠΊΡΠ΅ΠΌ CIL Π²ΡΡΠ°ΠΆΠ°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ²ΠΎΠΈΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ, Π° ΡΠ°ΠΌΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ Ρ ΡΠ΅ΠΌ, ΡΡΠΎΠ±Ρ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠ»ΡΡ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠΉ Π±Π»ΠΎΠΊ .NET.
Π ΠΎΠ»Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² CIL
ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, Π΅ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ Π»Π΅ΠΊΡΠ΅ΠΌ CIL, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠΎΠ»Π½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° .NET. ΠΡΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΡ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΠΌΠΈ. ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ CIL ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° CIL ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½, ΡΠΈΠΏΡ ΠΈ ΡΠ»Π΅Π½Ρ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ΡΡ Π² ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡΠ°, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΡΠΊΠΎΠΉ (.) (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, .namespace, .class, .publickeytoken, .override, .method, .assembly ΠΈ Ρ.Π΄.). Π’Π°ΠΊ, Π΅ΡΠ»ΠΈ Π²Π°Ρ ΡΠ°ΠΉΠ» *.il (ΠΎΠ±ΡΡΠ½ΠΎΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ°ΠΉΠ»Π°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ CIL) ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ΄Π½Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ .namespace ΠΈ ΡΡΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ .Ρlass, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ CIL ΡΠ³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΡΠΉ Π±Π»ΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡ ΠΎΠ΄Π½ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ .NET ΠΈ ΡΡΠΈ ΡΠΈΠΏΠ° ΠΊΠ»Π°ΡΡΠ° .NET.
Π ΠΎΠ»Ρ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² CIL
ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ CIL ΡΠ°ΠΌΠΈ ΠΏΠΎ ΡΠ΅Π±Π΅ ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ²Π½ΡΠΌΠΈ, ΡΡΠΎΠ±Ρ Π΄Π°ΡΡ ΠΈΡΡΠ΅ΡΠΏΡΠ²Π°ΡΡΠ΅Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΠΈΠΏΠ° .NET ΠΈΠ»ΠΈ Π΅Π³ΠΎ ΡΠ»Π΅Π½Π°. ΠΠΎΡΡΠΎΠΌΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ CIL ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌΠΈ CIL, ΡΠΎΠΎΠ±ΡΠ°ΡΡΠΈΠΌΠΈ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π΄Π°Π½Π½Π°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° .class ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΡΡ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌ public (ΡΡΠΎΠ±Ρ Π·Π°Π΄Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠΈΠΏΠ°), Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ extends (ΡΡΠΎΠ±Ρ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ ΡΠΈΠΏΠ°) ΠΈΠ»ΠΈ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ implements (ΡΡΠΎΠ±Ρ Π·Π°Π΄Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ², ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠΈΠΏΠΎΠΌ).
Π ΠΎΠ»Ρ ΠΊΠΎΠ΄ΠΎΠ² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ CIL
ΠΠΎΡΠ»Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° .NET, ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ ΠΈ Π½Π°Π±ΠΎΡΠ° ΡΠΈΠΏΠΎΠ² Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Ρ GIL Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² ΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΎΡΡΠ°Π΅ΡΡΡ ΠΎΠ΄Π½ΠΎ β ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΠΏΠ°. ΠΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π°Π΄Π°ΡΠ΅ΠΉ ΠΊΠΎΠ΄ΠΎΠ² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ. Π ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΡΠ°Π΄ΠΈΡΠΈΡΠΌΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠΎΠ² Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ, ΠΊΠΎΠ΄Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ CIL, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΈΠΌΠ΅ΡΡ ΠΏΡΠΎΡΡΠΎ Π½Π΅ΠΏΡΠΎΠΈΠ·Π½ΠΎΡΠΈΠΌΡΠ΅ Π°Π±Π±ΡΠ΅Π²ΠΈΠ°ΡΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΡΠΎΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π΅ ΠΏΠΎΠ½ΡΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ LoadString, a ldstr.
ΠΠΎ Π²ΡΠ΅ ΠΆΠ΅, ΡΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΡΠ°Π΄ΠΎΠ²Π°ΡΡ, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠ΄Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ CIL Π² ΡΠΎΡΠ½ΠΎΡΡΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΠΈΡ Π°Π½Π°Π»ΠΎΠ³Π°ΠΌ Π² C# (ΡΡΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, box, unbox, throw ΠΈ sizeof). ΠΡ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠΎΠ΄Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ CIL Π²ΡΠ΅Π³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ»Π΅Π½Π° ΠΈ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² CIL, ΠΎΠ½ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ, Π·Π°Π΄Π°Π½Π½ΡΠΌ ΡΠΎΡΠΊΠΎΠΉ.
Π Π°Π·Π»ΠΈΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊΠΎΠΉ ΠΈ ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ CIL
ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ ΠΎΠ±ΡΡΡΠ½ΡΠ»ΠΎΡΡ, ΠΊΠΎΠ΄Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ldstr, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ»Π΅Π½ΠΎΠ² Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΠΎ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΡΡΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΡ (Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈ ldstr) ΡΠ²Π»ΡΡΡΡΡ ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊΠ°ΠΌΠΈ CIL, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΌΠΈ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ ΠΊΠΎΠ΄Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ CIL. Π§ΡΠΎΠ±Ρ ΠΏΠΎΡΡΠ½ΠΈΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ C#.
static int Add(int x, int Ρ) {
return Ρ + Ρ;
}
Π ΡΠ΅ΡΠΌΠΈΠ½Π°Ρ CIL ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π²ΡΡ ΡΠΈΡΠ΅Π» ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΎ ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ 0X58. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²ΡΡΠΈΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠ΄ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ 0X59, Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅ΡΡΡ ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ 0X73. Π‘ ΡΡΠ΅ΡΠΎΠΌ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΡΠ½ΠΎ, ΡΡΠΎ CIL-ΠΊΠΎΠ΄, ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΠΉ JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ, Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°Π±ΠΎΡΠΎΠΌ Π΄Π²ΠΎΠΈΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ .
Π ΡΡΠ°ΡΡΡΡ, Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ CIL Π΅ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊΠ° add ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π²ΠΌΠ΅ΡΡΠΎ 0X58, sub β Π²ΠΌΠ΅ΡΡΠΎ 0X59, a newobj β Π²ΠΌΠ΅ΡΡΠΎ 0X73. ΠΠ²ΠΈΠ΄Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊΠ°ΠΌΠΈ ΠΈ ΠΊΠΎΠ΄Π°ΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, Π½Π΅ΡΡΡΠ΄Π½ΠΎ Π΄ΠΎΠ³Π°Π΄Π°ΡΡΡΡ, ΡΡΠΎ Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ CIL, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ildasm.exe, ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΡ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ ΠΊΠΎΠ΄Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊΡ CIL.
.method public hidebysig static int32 Add(int32 x, int32 y) cil managed {
β¦
// ΠΠ΅ΠΊΡΠ΅ΠΌΠ° 'add' ΡΠ²Π»ΡΠ΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎΠΉ ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊΠΎΠΉ CIL,
// ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ 0X58.
add
β¦
}
Π’Π΅ΠΌ, ΠΊΡΠΎ Π½Π΅ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΡΡΡ Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ .NET (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°), ΠΎΠ±ΡΡΠ½ΠΎ Π½Π΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΈΠΌΠ΅ΡΡ Π΄Π΅Π»ΠΎ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Ρ ΡΠΈΡΠ»ΠΎΠ²ΡΠΌΠΈ ΠΊΠΎΠ΄Π°ΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ CIL. ΠΠΎΡΡΠΎΠΌΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΅Π³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ .NET Π³ΠΎΠ²ΠΎΡΡΡ ΠΎ "ΠΊΠΎΠ΄Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ CIL", ΠΎΠ½ΠΈ (ΠΊΠ°ΠΊ ΠΈ Ρ Π² ΡΡΠΎΠΌ ΡΠ΅ΠΊΡΡΠ΅) ΠΈΠΌΠ΅ΡΡ Π² Π²ΠΈΠ΄Ρ Π½Π°Π±ΠΎΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎΠΉ ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊΠΈ, Π° Π½Π΅ Π»Π΅ΠΆΠ°ΡΠΈΠ΅ Π² Π΅Π΅ ΠΎΡΠ½ΠΎΠ²Π΅ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ : ΡΡΠ΅ΠΊΠΎΠ²Π°Ρ ΠΏΡΠΈΡΠΎΠ΄Π° CIL
ΠΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ ΡΠ·ΡΠΊΠΈ .NET (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ C#) ΠΏΡΡΠ°ΡΡΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΡΠΊΡΡΡΡ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ. ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· Π°ΡΠΏΠ΅ΠΊΡΠΎΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ .NET, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠΊΡΡΡΡΠΌ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Ρ ΠΎΡΠΎΡΠΎ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ CIL ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ·ΡΠΊΠΎΠΌ, ΡΠ΅Π»ΠΈΠΊΠΎΠΌ ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΌ Π½Π° ΡΡΠ΅ΠΊΠΎΠ²ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ. ΠΠ°ΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΡΠΎ ΠΏΡΠΈ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠΌΠ΅Π½ System.Collections (ΡΠΌ. Π³Π»Π°Π²Ρ 7) ΠΌΡ Ρ Π²Π°ΠΌΠΈ Π²ΡΡΡΠ½ΠΈΠ»ΠΈ, ΡΡΠΎ ΡΠΈΠΏ stack ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΡΠ΅ΠΊ, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΈΠ· ΡΡΠ΅ΠΊΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π½Π° Π²Π΅ΡΡΠΈΠ½Π΅ ΡΡΠ΅ΠΊΠ°. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ CIL-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈ Π²ΡΠ³ΡΡΠ·ΠΊΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ System.Π‘ollections.Stack, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.