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)); }