protected override void ReadOpCodeData(IntComputer computer) { long nextMemoryData = computer.ReadNextMemoryAddress(); firstVal = new OpCodeParameter(curInstruction.GetParamMode(0), nextMemoryData, computer); nextMemoryData = computer.ReadNextMemoryAddress(); secondVal = new OpCodeParameter(curInstruction.GetParamMode(1), nextMemoryData, computer); }
protected override void ReadOpCodeData(IntComputer computer) { long nextMemoryData = computer.ReadNextMemoryAddress(); destinationParam = new OpCodeParameter(curInstruction.GetParamMode(0), nextMemoryData, computer); inputData = computer.ReadNextInput(); }
public static OpCode ReadNextOpCode(IntComputer computer) { // 1002 //ABCDE //01002 = DE = opcode, c = mode for op 1, b mode for op 2 a, mode for op 3 long opCodeData = computer.ReadNextMemoryAddress(); OpCodeInstruction newInstruction = new OpCodeInstruction(opCodeData); switch (newInstruction.GetInstruction()) { case OpCodeInstruction.OPCODE_TYPES.ADD: return(new AddOpCode(newInstruction)); case OpCodeInstruction.OPCODE_TYPES.MUL: return(new MulOpcode(newInstruction)); case OpCodeInstruction.OPCODE_TYPES.EXIT: return(new ExitOpCode(newInstruction)); case OpCodeInstruction.OPCODE_TYPES.INPUT: return(new InputOpCode(newInstruction)); case OpCodeInstruction.OPCODE_TYPES.OUTPUT: return(new OutputOpCode(newInstruction)); case OpCodeInstruction.OPCODE_TYPES.JUMP_IF_TRUE: return(new JumpIfTrueOpCode(newInstruction)); case OpCodeInstruction.OPCODE_TYPES.JUMP_IF_FALSE: return(new JumpIfFalseOpCode(newInstruction)); case OpCodeInstruction.OPCODE_TYPES.LESS_THAN: return(new LessThanOpCode(newInstruction)); case OpCodeInstruction.OPCODE_TYPES.EQUALS: return(new EqualsOpCode(newInstruction)); case OpCodeInstruction.OPCODE_TYPES.ADJUST_RELATIVE_BASE: return(new AdjustRelativeBaseOpCode(newInstruction)); default: Console.WriteLine("DER FARK?"); return(null); } }