Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        protected override void ReadOpCodeData(IntComputer computer)
        {
            long nextMemoryData = computer.ReadNextMemoryAddress();

            destinationParam = new OpCodeParameter(curInstruction.GetParamMode(0), nextMemoryData, computer);
            inputData        = computer.ReadNextInput();
        }
Esempio n. 3
0
        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);
            }
        }