/* Main execution loop */
do
{
+NextInst:
/* Check if this is a new instruction */
if (State->PrefixFlags == 0) State->SavedInstPtr = State->InstPtr;
CurrentHandler(State, Opcode);
/* If this is a prefix, go to the next instruction immediately */
- if (CurrentHandler == Fast486OpcodePrefix) continue;
+ if (CurrentHandler == Fast486OpcodePrefix) goto NextInst;
/* A non-prefix opcode has been executed, reset the prefix flags */
State->PrefixFlags = 0;
State->IntStatus = FAST486_INT_EXECUTE;
}
}
- while ((CurrentHandler == Fast486OpcodePrefix) ||
- (Command == FAST486_CONTINUE) ||
+ while ((Command == FAST486_CONTINUE) ||
(Command == FAST486_STEP_OVER && ProcedureCallCount > 0) ||
(Command == FAST486_STEP_OUT && ProcedureCallCount >= 0));
}