Poiché questi codici IL visualizzano di più, mi piace imparare come interpretarli correttamente.Come imparare IL su CLR
non riuscivo a trovare una documentazione come compilatore C# o in qualsiasi altro modo penso di poter praticamente prendersi cura di tutto il resto dopo apprendo questa quelli comuni:
seguito sono riportati alcuni codici IL campione contenente quello che mi serve di sapere:
Esempio 1:
.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
// Code size 15 (0xf)
.maxstack 1
.locals init ([0] class EnumReflection.DerivedClass derivedClass)
IL_0000: nop
IL_0001: newobj instance void EnumReflection.DerivedClass::.ctor()
IL_0006: stloc.0
IL_0007: ldloc.0
IL_0008: callvirt instance void EnumReflection.DerivedClass::WriteOutput()
IL_000d: nop
IL_000e: ret
} // end of method Program::Main
Esempio 2:
.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
// Code size 38 (0x26)
.maxstack 8
IL_0000: ldarg.0
IL_0001: ldstr "Hello"
IL_0006: stfld string EnumReflection.DerivedClass::hello
IL_000b: ldarg.0
IL_000c: ldstr "World"
IL_0011: stfld string EnumReflection.DerivedClass::world
IL_0016: ldarg.0
IL_0017: ldc.i4.s 123
IL_0019: stfld int32 EnumReflection.DerivedClass::age
IL_001e: ldarg.0
IL_001f: call instance void EnumReflection.BaseClass::.ctor()
IL_0024: nop
IL_0025: ret
} // end of method DerivedClass::.ctor
So cosa fanno questi codici da quando li ho prodotti :-) tuttavia mi piacerebbe saperne di più sul codice IL corrispondente.
Questi campioni contengono codici IL come e potresti spiegare il comando con punti interrogativi? e anche cosa rappresentano quei comandi? Quindi possiamo memorizzarli facilmente.
- NOP (per il debug - nessuna operazione)
- newobj (a quanto pare sta creando nuovo oggetto nella heap)
- stloc.0?
- ldloc.0?
- ret?
- ldarg.0?
- ldstr?
- stfld?
- ldc.i4.s?
- .ctor - costruttore
Capire IL è importante in quanto espone il modo particolare compilatore produce codici e agire in casi specifici.
Tuttavia, non sono riuscito a trovare documenti validi che contengano esempi anche su IL. CLR con C# 3.0 è un buon libro, ma alla fine non è un libro IL, quindi non spiega tutto su IL.
EDIT:
ho trovato le specifiche e dico queste: Grazie a @usr.
- NOP (per il debug - nessuna operazione)
- newobj - creare un nuovo oggetto
- stloc.0 - valore pop dalla pila a variabile locale
- ldloc.0? - carica la variabile locale nello stack
- ritorno dal metodo
- ldarg.0 - Carica argomento 0 nello stack.
- ldstr - caricare una stringa letterale
- stfld - negozio in un campo di un oggetto
- ldc.i4.s - a pressione num nello stack come int32, breve modulo.
- .ctor - costruttore
fino alla fine degli elettori:.. ho modificato la mia domanda ... – Tarik
ho cambiato il titolo che ho. pensa che questa sia una domanda perfettamente valida – usr
@usr: Grazie per il cambio di titolo, su sembra buono ora – Tarik