public string InstructionAsString(int instr, VirtualMachine.InstructionType instrType, int numOperands)
    {
        string ret = instrType.ToString();

        for (int i = 1; i <= numOperands; ++i)
        {
            ret += " " + OperandAsString(instr, i);
        }
        return(ret);
    }
    public string InstructionAsString(int i)
    {
        int instr = vm.ReadMemory(i);

        VirtualMachine.InstructionType instrType = vm.GetInstructionType(instr);
        switch (instrType)
        {
        case VirtualMachine.InstructionType.NOOP:
            return(InstructionAsString(instr, instrType, 0));

        case VirtualMachine.InstructionType.LD:
            return(LdInstructionAsString(instr, instrType));

        case VirtualMachine.InstructionType.MOV:
            return(InstructionAsString(instr, instrType, 2));

        case VirtualMachine.InstructionType.ADD:
            return(InstructionAsString(instr, instrType, 3));

        case VirtualMachine.InstructionType.SUB:
            return(InstructionAsString(instr, instrType, 3));

        case VirtualMachine.InstructionType.MUL:
            return(InstructionAsString(instr, instrType, 3));

        case VirtualMachine.InstructionType.DIV:
            return(InstructionAsString(instr, instrType, 3));

        case VirtualMachine.InstructionType.GT:
            return(InstructionAsString(instr, instrType, 3));

        case VirtualMachine.InstructionType.LT:
            return(InstructionAsString(instr, instrType, 3));

        case VirtualMachine.InstructionType.EQ:
            return(InstructionAsString(instr, instrType, 3));

        case VirtualMachine.InstructionType.JMP:
            return(JmpInstructionAsString(instr, instrType));
        }

        return(InstructionAsString(instr, instrType, 0));
    }
 public string JmpInstructionAsString(int instr, VirtualMachine.InstructionType instrType)
 {
     return(instrType.ToString() + " " + OperandAsString(instr, 1) + " " + vm.GetOperandCondition(2));
 }
 public string LdInstructionAsString(int instr, VirtualMachine.InstructionType instrType)
 {
     return(instrType.ToString() + " " + OperandAsString(instr, 1) + " " + vm.GetValue(instr));
 }