Emulate ldftn, ldsflda, ldtoken, ldvirtftn and ldflda

This commit is contained in:
de4dot 2012-08-04 12:03:12 +02:00
parent fdd42859b3
commit 19e8879d45

View File

@ -385,6 +385,12 @@ namespace de4dot.blocks.cflow {
case Code.Ldfld: emulate_Ldfld(instr); break;
case Code.Ldsfld: emulate_Ldsfld(instr); break;
case Code.Ldftn: valueStack.push(new ObjectValue(instr.Operand)); break;
case Code.Ldsflda: valueStack.push(new ObjectValue(instr.Operand)); break;
case Code.Ldtoken: valueStack.push(new ObjectValue(instr.Operand)); break;
case Code.Ldvirtftn:valueStack.pop(); valueStack.push(new ObjectValue()); break;
case Code.Ldflda: valueStack.pop(); valueStack.push(new ObjectValue()); break;
case Code.Unbox:
case Code.Conv_R_Un:
@ -440,16 +446,11 @@ namespace de4dot.blocks.cflow {
case Code.Ldelem_R4:
case Code.Ldelem_R8:
case Code.Ldelem_Ref:
case Code.Ldflda:
case Code.Ldftn:
case Code.Ldind_I:
case Code.Ldind_R4:
case Code.Ldind_R8:
case Code.Ldind_Ref:
case Code.Ldobj:
case Code.Ldsflda:
case Code.Ldtoken:
case Code.Ldvirtftn:
case Code.Leave:
case Code.Leave_S:
case Code.Localloc: