public CpuInterrupt(Die die, OpcodeDefinition definition) : base(die) { if (definition == null) { throw new ArgumentNullException("definition"); } _definition = definition; if (_definition.Instruction == null) { throw new InvalidOperationException( "The Interrupt OpcodeDefinition has no associated Instruction: " + definition.ToString()); } _interrupt = (Interrupt)Activator.CreateInstance( _definition.Instruction, Die, _definition); }
internal static T Create <T>(CpuZ80 cpu, OpcodeDefinition opcodeDefinition) where T : Instruction { if (opcodeDefinition == null) { throw new ArgumentNullException("opcodeDefintion", "There is no OpcodeDefinition available."); } if (opcodeDefinition.Instruction == null) { throw new InvalidOperationException( "The OpcodeDefinition has no associated Instruction: " + opcodeDefinition.ToString()); } if (!typeof(T).IsAssignableFrom(opcodeDefinition.Instruction)) { throw Errors.AssignedToIllegalOpcode(); } return((T)Activator.CreateInstance(opcodeDefinition.Instruction, cpu)); }