本文整理汇总了C#中VMStackFrame.GetCurrentInstruction方法的典型用法代码示例。如果您正苦于以下问题:C# VMStackFrame.GetCurrentInstruction方法的具体用法?C# VMStackFrame.GetCurrentInstruction怎么用?C# VMStackFrame.GetCurrentInstruction使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VMStackFrame
的用法示例。
在下文中一共展示了VMStackFrame.GetCurrentInstruction方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ExecuteInstruction
private void ExecuteInstruction(VMStackFrame frame)
{
var instruction = frame.GetCurrentInstruction();
var opcode = instruction.Opcode;
if (opcode >= 256)
{
BHAV bhav = null;
GameIffResource CodeOwner;
if (opcode >= 8192)
{
CodeOwner = frame.Callee.SemiGlobal.Resource;
bhav = frame.Callee.SemiGlobal.Resource.Get<BHAV>(opcode);
}
else if (opcode >= 4096)
{
/** Private sub-routine call **/
CodeOwner = frame.CalleePrivate;
bhav = frame.CalleePrivate.Get<BHAV>(opcode);
}
else
{
/** Global sub-routine call **/
CodeOwner = frame.Global.Resource;
bhav = frame.Global.Resource.Get<BHAV>(opcode);
}
var operand = frame.GetCurrentOperand<VMSubRoutineOperand>();
ExecuteSubRoutine(frame, bhav, CodeOwner, operand);
return;
}
var primitive = Context.GetPrimitive(opcode);
if (primitive == null)
{
throw new Exception("Unknown primitive!");
//Pop(VMPrimitiveExitCode.ERROR);
//return;
}
VMPrimitiveHandler handler = primitive.GetHandler();
var result = handler.Execute(frame);
HandleResult(frame, instruction, result);
}
示例2: ExecuteInstruction
private void ExecuteInstruction(VMStackFrame frame)
{
var instruction = frame.GetCurrentInstruction();
var opcode = instruction.Opcode;
if (opcode >= 256)
{
BHAV bhav = null;
GameObject CodeOwner;
if (opcode >= 8192)
{
// Semi-Global sub-routine call
bhav = frame.ScopeResource.SemiGlobal.Get<BHAV>(opcode);
}
else if (opcode >= 4096)
{
// Private sub-routine call
bhav = frame.ScopeResource.Get<BHAV>(opcode);
}
else
{
// Global sub-routine call
//CodeOwner = frame.Global.Resource;
bhav = frame.Global.Resource.Get<BHAV>(opcode);
}
CodeOwner = frame.CodeOwner;
var operand = (VMSubRoutineOperand)instruction.Operand;
ExecuteSubRoutine(frame, bhav, CodeOwner, operand);
NextInstruction();
return;
}
var primitive = Context.Primitives[opcode];
if (primitive == null)
{
//throw new Exception("Unknown primitive!");
HandleResult(frame, instruction, VMPrimitiveExitCode.GOTO_TRUE);
return;
//Pop(VMPrimitiveExitCode.ERROR);
}
VMPrimitiveHandler handler = primitive.GetHandler();
var result = handler.Execute(frame, instruction.Operand);
HandleResult(frame, instruction, result);
}