sziasztok!
egy kis problémám lenne IL értelmezéssel, van itt vki aki csinált már hasonlót?
Kód:
.method public hidebysig specialname instance valuetype RedGate.Licensing.Client.TrialStatus
get_TrialStatus() cil managed
{
// Code size 7 (0x7)
.maxstack 1
IL_0000: ldarg.0
IL_0001: ldfld valuetype RedGate.Licensing.Client.TrialStatus RedGate.Licensing.Client.Licence::_1
IL_0006: ret
} // end of method Licence::get_TrialStatus
ezt még értem.
na de nézzünk egy kicsit összetettebbet:
Kód:
.method public hidebysig specialname instance int32
get_DaysLeftInTrial() cil managed
{
// Code size 50 (0x32)
.maxstack 3
.locals init (valuetype [mscorlib]System.TimeSpan V_0,
int32 V_1,
valuetype [mscorlib]System.DateTime V_2)
IL_0000: ldarg.0
IL_0001: call instance valuetype RedGate.Licensing.Client.TrialStatus RedGate.Licensing.Client.Licence::get_TrialStatus()
IL_0006: ldc.i4.1
IL_0007: beq.s IL_000b
IL_0009: ldc.i4.0
IL_000a: ret
IL_000b: call valuetype [mscorlib]System.DateTime [mscorlib]System.DateTime::get_UtcNow()
IL_0010: stloc.2
IL_0011: ldloca.s V_2
IL_0013: ldarg.0
IL_0014: ldfld valuetype [mscorlib]System.DateTime RedGate.Licensing.Client.Licence::_2
IL_0019: call instance valuetype [mscorlib]System.TimeSpan [mscorlib]System.DateTime::Subtract(valuetype [mscorlib]System.DateTime)
IL_001e: stloc.0
IL_001f: ldc.i4.s 14
IL_0021: ldloca.s V_0
IL_0023: call instance int32 [mscorlib]System.TimeSpan::get_Days()
IL_0028: sub
IL_0029: stloc.1
IL_002a: ldloc.1
IL_002b: ldc.i4.0
IL_002c: bge.s IL_0030
IL_002e: ldc.i4.0
IL_002f: stloc.1
IL_0030: ldloc.1
IL_0031: ret
} // end of method Licence::get_DaysLeftInTrial
nagyon megköszönném, ha vki elmesélné sorról sorra, mi történik.
azt értem, hogy:
IL_0000: betölti az arg-okat a stackra.
IL_0001: meghívja a get_TrialStatus-t
IL_0006: ez a IL_0001 -t tárolja memóriában? itt jönnek a kérdések
IL_0007: összehasonlítja az IL_0006-t ezzel:IL_000b
csakhogy az egyik date a masik meg RedGate.Licensing.Client.TrialStatus type, ami igazabol csak egy enum.
de nem igazan ertem, hogy ez utan mi történik.
vki felvilágosítana? megköszönném.
Könyvjelzők