public void Test_POP(byte opcode) { ushort sp = 0x4242; byte lsbData = 0xFF; byte msbData = 0x11; var expectedState = new CpuState(); expectedState.StackPointer = (ushort)(sp + 2); switch (opcode) { case 0xC1: expectedState.Registers.BC = (ushort)((msbData << 8) | lsbData); break; case 0xD1: expectedState.Registers.DE = (ushort)((msbData << 8) | lsbData); break; case 0xE1: expectedState.Registers.HL = (ushort)((msbData << 8) | lsbData); break; case 0xF1: expectedState.Registers.F = lsbData; expectedState.Registers.A = msbData; break; } var actualState = new CpuState(); actualState.StackPointer = sp; var memoryMock = new Mock <IRandomAccessMemory>(); memoryMock.Setup(m => m.ReadByte(sp)).Returns(lsbData); memoryMock.Setup(m => m.ReadByte((ushort)(sp + 1))).Returns(msbData); var instruction = new POP(); instruction.Initialize(opcode); //act while (!instruction.IsFetchNecessary()) { instruction.ExecuteCycle(actualState, memoryMock.Object); } //assert TestHelper.AssertCpuState(expectedState, actualState); memoryMock.Verify(m => m.WriteByte(It.IsAny <ushort>(), It.IsAny <byte>()), Times.Never); }
public void TestPOP() { MemoryModel.SetAddressBusLength = 20; MemoryModel memory = MemoryModel.GetInstance(); GeneralPurposeRegisters generalRegistersMock = new GeneralPurposeRegisters(); SegmentRegisters segmentRegistersMock = new SegmentRegisters(); PointerRegisters pointerRegistersMock = new PointerRegisters(); LoggerMock loggerMock = new LoggerMock(); RegistryCommander registryCommand = new RegistryCommander(loggerMock); POP pop = new POP(generalRegistersMock, pointerRegistersMock, segmentRegistersMock); PUSH push = new PUSH(generalRegistersMock, pointerRegistersMock, segmentRegistersMock); XCHG xchg = new XCHG(generalRegistersMock, segmentRegistersMock); MOV mov = new MOV(generalRegistersMock, segmentRegistersMock); AssignToRegistry assignTo = new AssignToRegistry(generalRegistersMock, pointerRegistersMock, segmentRegistersMock); registryCommand.AddHandler(pop); registryCommand.AddHandler(push); registryCommand.AddHandler(xchg); registryCommand.AddHandler(mov); registryCommand.AddHandler(assignTo); byte[] word; registryCommand.InputCommand("ax 1122"); registryCommand.InputCommand("push ax"); registryCommand.InputCommand("pop cx"); word = generalRegistersMock.GetRegistry("CX"); Assert.AreEqual(34, word[0]); Assert.AreEqual(17, word[1]); Assert.AreEqual("Value 1122h from physical address 0h popped from stack to registry CX.\r\n", loggerMock.outputResult); word = pointerRegistersMock.GetRegistry("SP"); Assert.AreEqual(0, word[0]); registryCommand.InputCommand("ax FFEE"); registryCommand.InputCommand("bx AA99"); registryCommand.InputCommand("SS FF"); registryCommand.InputCommand("push ax"); registryCommand.InputCommand("push bx"); registryCommand.InputCommand("pop dx"); word = generalRegistersMock.GetRegistry("DX"); Assert.AreEqual(153, word[0]); Assert.AreEqual(170, word[1]); Assert.AreEqual("Value AA99h from physical address FF2h popped from stack to registry DX.\r\n", loggerMock.outputResult); word = pointerRegistersMock.GetRegistry("SP"); Assert.AreEqual(2, word[0]); }
private bool Conn(string Server, string user, string pass) { try { pop3 = new POP(Server, user, pass, 110); ns = pop3.Connect(); if (pop3.GetNumberOfNewMessages() == "Unable")//如果登录错误 { return(false); } else { return(true); } } catch { return(false); } }
private CommandInterpreter InitDefaultRegistryCommander() { RegistryCommander commander = new RegistryCommander(this); POP pop = new POP(generalPurposeRegisters, pointerRegisters, segmentRegisters); PUSH push = new PUSH(generalPurposeRegisters, pointerRegisters, segmentRegisters); XCHG xchg = new XCHG(generalPurposeRegisters, indexRegisters, pointerRegisters, segmentRegisters); MOV mov = new MOV(generalPurposeRegisters, indexRegisters, pointerRegisters, segmentRegisters); AssignToRegistry assignTo = new AssignToRegistry(generalPurposeRegisters, indexRegisters, pointerRegisters, segmentRegisters); commander.AddHandler(pop); commander.AddHandler(push); commander.AddHandler(xchg); commander.AddHandler(mov); commander.AddHandler(assignTo); return(commander); }
public static void AssociateOpcodes() { instructions[0] = new NOP(); instructions[1] = new PRNT(); instructions[16] = new PUSH(); instructions[17] = new POP(); instructions[18] = new SAVE(); instructions[19] = new CPY(); instructions[20] = new RNDM(); instructions[21] = new EMPTY(); instructions[128] = new ADD(); instructions[129] = new SUB(); instructions[130] = new MUL(); instructions[131] = new DIV(); instructions[132] = new SUB2(); instructions[133] = new DIV2(); instructions[134] = new NEG(); instructions[135] = new ABS(); instructions[144] = new INC(); instructions[145] = new DEC(); instructions[64] = new JMP(); instructions[65] = new JGZ(); instructions[66] = new JLZ(); instructions[67] = new JEZ(); instructions[68] = new JNZ(); instructions[69] = new CALL(); instructions[70] = new RET(); instructions[71] = new LDLOC(); instructions[72] = new STLOC(); instructions[73] = new LDARG(); instructions[74] = new STARG(); instructions[0b10100100] = new CMP();
public void TestInvalidPOPCommand() { GeneralPurposeRegisters registersMock = new GeneralPurposeRegisters(); LoggerMock loggerMock = new LoggerMock(); RegistryCommander registryCommand = new RegistryCommander(loggerMock); POP pop = new POP(registersMock); registryCommand.AddHandler(pop); registryCommand.InputCommand("pop"); Assert.AreEqual("Popping to registry from stack requires two arguments.", loggerMock.outputResult); registryCommand.InputCommand("pop ak"); Assert.AreEqual("AK is unsupported registry name.\r\n", loggerMock.outputResult); registryCommand.InputCommand("pop ax"); Assert.AreEqual("Command interpreter couldn't find SP registry.\r\n", loggerMock.outputResult); registryCommand = new RegistryCommander(loggerMock); pop = new POP(registersMock, new PointerRegisters()); registryCommand.AddHandler(pop); registryCommand.InputCommand("pop ax"); Assert.AreEqual("Command interpreter couldn't find SS registry.\r\n", loggerMock.outputResult); registryCommand = new RegistryCommander(loggerMock); pop = new POP(registersMock, new PointerRegisters(), new SegmentRegisters()); registryCommand.AddHandler(pop); registryCommand.InputCommand("pop al"); Assert.AreEqual("Cannot use command POP for half registers.\r\n", loggerMock.outputResult); registryCommand.InputCommand("pop ax"); Assert.AreEqual("The stack is empty, cannot perform operation.\r\n", loggerMock.outputResult); }
void Start() { //popPlan = new string[5] {CLASSROOM, BATHROOM, CAFETERIA, TABLE, OUTSIDE}; popPlan = POP.popAlgo(covidAware); initializeIA(popPlan); }
public void ddg() { POP pop = new POP("pop.126.com", "*****@*****.**", "xujinze", 110); pop.readMailInfo(2); }