public EvaluationStack ExecuteTestCaseStandard(int offset, params StackItem[] args) { var context = InvocationStack.Pop(); LoadContext(context.Clone(offset)); for (var i = args.Length - 1; i >= 0; i--) { this.Push(args[i]); } var initializeOffset = GetMethodEntryOffset("_initialize"); if (initializeOffset != -1) { LoadContext(CurrentContext.Clone(initializeOffset)); } while (true) { var bfault = (this.State & VMState.FAULT) > 0; var bhalt = (this.State & VMState.HALT) > 0; if (bfault || bhalt) { break; } Console.WriteLine("op:[" + this.CurrentContext.InstructionPointer.ToString("X04") + "]" + this.CurrentContext.CurrentInstruction.OpCode); this.ExecuteNext(); } return(this.ResultStack); }
public EvaluationStack ExecuteTestCaseStandard(int offset, ushort rvcount, NefFile contract, params StackItem[] args) { var context = InvocationStack.Pop(); context = CreateContext(context.Script, rvcount, offset); LoadContext(context); // Mock contract var contextState = CurrentContext.GetState <ExecutionContextState>(); contextState.Contract ??= new ContractState() { Nef = contract }; for (var i = args.Length - 1; i >= 0; i--) { this.Push(args[i]); } var initializeOffset = GetMethodEntryOffset("_initialize"); if (initializeOffset != -1) { LoadContext(CurrentContext.Clone(initializeOffset)); } while (true) { var bfault = (this.State & VMState.FAULT) > 0; var bhalt = (this.State & VMState.HALT) > 0; if (bfault || bhalt) { break; } Console.WriteLine("op:[" + this.CurrentContext.InstructionPointer.ToString("X04") + "]" + this.CurrentContext.CurrentInstruction.OpCode); this.ExecuteNext(); } return(this.ResultStack); }