private bool CanExecuteNextOpCode(ParsedOpCode op) { // Ensure that disabled opcodes are always executed. var branchOp = BranchStack.Peek(); return(branchOp == BranchOption.True || op.Code.IsConditional() || op.Code.IsDisabled()); }
private void OpNotIf() { switch (BranchStack.Peek()) { case BranchOption.Skip: case BranchOption.False: BranchStack.Push(BranchOption.Skip); break; case BranchOption.True: BranchStack.Push(!MainStack.PopBool() ? BranchOption.True : BranchOption.False); break; } }
private void OpElse() { switch (BranchStack.Peek()) { case BranchOption.Skip: break; case BranchOption.False: BranchStack.Replace(BranchOption.True); break; case BranchOption.True: BranchStack.Replace(BranchOption.False); break; } }