public void TestIterativo() { startP = 1000; InitWorldTierra(); cpu = world.cpu() as CPU; cpu.lastDeallocate = startP; IOrganismo org = world.criaOrganismo("ancestor_test.txt"); Assert.IsTrue(org.getMemorySize() == ORG_SIZE, org.getMemorySize() + " <> " + ORG_SIZE); org.setReg(R_C, 10); org.setReg(R_A, 15); Assert.IsTrue(org.getReg(R_C) == 10); Assert.IsTrue(org.getReg(R_A) == 15); int ip = startP; IList <string> instrunctionsRun = new List <string>(); //jmp depois do divide while (org.ip != 1050) { ip = org.ip - startP; PreTests(ip, org); Instruction inst = org.run(); instrunctionsRun.Add(ip + " :: " + inst.getDescription(org, startP + ip)); PostTests(ip, org); } }
protected float runOrganismo(float error, bool checkTick, IOrganismo o) { // if (o.id==1) // ALifeIO.saveToFile(o); if (isRunnable(o)) { o.run(); int memorySize = o.getMemorySize(); totalMemory += memorySize; if (memorySize > maxMemory) { maxMemory = (int)memorySize; } if (memorySize < minMemory || minMemory == 0) { minMemory = (int)memorySize; } error += o.getError(); if (checkTick) { o.checkTick(); } } else { if (o.parent == null || o.parent.isAlive() == false) { dealloc(o); } } return(error); }
public void TestOrganismoPassoAPasso() { startP = 1000; InitWorldTierra(); cpu = world.cpu() as CPU; cpu.lastDeallocate = startP; IOrganismo org = world.criaOrganismo("ancestor_test.txt"); Assert.IsTrue(org.getMemorySize() == ORG_SIZE, org.getMemorySize() + " <> " + ORG_SIZE); int ipExpected = startP; org.setReg(R_C, 10); org.setReg(R_A, 15); Assert.IsTrue(org.getReg(R_C) == 10); Assert.IsTrue(org.getReg(R_A) == 15); int tmp = 0; //#jAvida Size: 110 //0=NOP_1 org.run(); ipExpected++; Assert.IsTrue(org.ip == ipExpected); //1=NOP_1 org.run(); ipExpected++; Assert.IsTrue(org.ip == ipExpected); //2=NOP_1 org.run(); ipExpected++; Assert.IsTrue(org.ip == ipExpected); //3=NOP_1 org.run(); ipExpected++; Assert.IsTrue(org.ip == ipExpected); //4=ZERO C org.run(); ipExpected += 2; Assert.IsTrue(org.ip == ipExpected); Assert.IsTrue(org.getReg(R_C) == 0); //6=OR C org.run(); ipExpected += 2; Assert.IsTrue(org.ip == ipExpected); Assert.IsTrue(org.getReg(R_C) == 1); //8=SHL C org.run(); ipExpected += 2; Assert.IsTrue(org.ip == ipExpected); Assert.IsTrue(org.getReg(R_C) == 2); //10=SHL C org.run(); ipExpected += 2; Assert.IsTrue(org.ip == ipExpected); Assert.IsTrue(org.getReg(R_C) == 4); //12=ADRB A org.run(); ipExpected += 2; Assert.IsTrue(org.ip == ipExpected); Assert.IsTrue(org.getReg(R_A) == startP + 4); //14=NOP_0 org.run(); ipExpected++; Assert.IsTrue(org.ip == ipExpected); //15=NOP_0 org.run(); ipExpected++; Assert.IsTrue(org.ip == ipExpected); //16=NOP_0 org.run(); ipExpected++; Assert.IsTrue(org.ip == ipExpected); //17=NOP_0 org.run(); ipExpected++; Assert.IsTrue(org.ip == ipExpected); //18=SUB A,C,A org.run(); ipExpected += 4; Assert.IsTrue(org.ip == ipExpected); Assert.IsTrue(org.getReg(R_A) == startP + 0, org.getReg(R_A) + "<>" + startP + 0); //22=MOV A,B org.run(); ipExpected += 3; Assert.IsTrue(org.ip == ipExpected); Assert.IsTrue(org.getReg(R_A) == org.getReg(R_B), org.getReg(R_A) + "<>" + org.getReg(R_B)); //25=ADRF A org.run(); ipExpected += 2; Assert.IsTrue(org.ip == ipExpected); Assert.IsTrue(org.getReg(R_A) == startP + 109); //27=NOP_0 org.run(); ipExpected++; Assert.IsTrue(org.ip == ipExpected); //28=NOP_0 org.run(); ipExpected++; Assert.IsTrue(org.ip == ipExpected); //29=NOP_0 org.run(); ipExpected++; Assert.IsTrue(org.ip == ipExpected); //30=NOP_1 org.run(); ipExpected++; Assert.IsTrue(org.ip == ipExpected); //31=INC A tmp = org.getReg(R_A); org.run(); ipExpected += 2; Assert.IsTrue(org.ip == ipExpected); Assert.IsTrue(tmp + 1 == org.getReg(R_A)); //33=SUB A,B,C org.run(); ipExpected += 4; Assert.IsTrue(org.ip == ipExpected); Assert.IsTrue(org.getReg(R_C) == (org.getReg(R_A) - org.getReg(R_B))); //37=NOP_1 org.run(); ipExpected++; Assert.IsTrue(org.ip == ipExpected); //38=NOP_1 org.run(); ipExpected++; Assert.IsTrue(org.ip == ipExpected); //39=NOP_0 org.run(); ipExpected++; Assert.IsTrue(org.ip == ipExpected); //40=NOP_1 org.run(); ipExpected++; Assert.IsTrue(org.ip == ipExpected); //41=MAL C,A org.run(); ipExpected += 3; Assert.IsTrue(org.ip == ipExpected); //44=CALL org.run(); ipExpected++; Assert.IsTrue(org.ip == startP + 61); //45=NOP_0 //46=NOP_0 //47=NOP_1 //48=NOP_1 //49=DIVIDE //50=JMP //51=NOP_0 //52=NOP_0 //53=NOP_1 //54=NOP_0 //55=IFZ C //57=NOP_1 //58=NOP_1 //59=NOP_0 //60=NOP_0 //61=PUSH A //63=PUSH B //65=PUSH C //67=NOP_1 //47=NOP_0 //48=NOP_1 //49=NOP_0 //50=MOVI B,A //51=DEC C //52=IFZ C //53=JMP //54=NOP_0 //55=NOP_1 //56=NOP_0 //57=NOP_0 //58=INC A //59=INC B //60=JMPB //61=NOP_0 //62=NOP_1 //63=NOP_0 //64=NOP_1 //65=IFZ C //66=NOP_1 //67=NOP_0 //68=NOP_1 //69=NOP_1 //70=POP C //71=POP B //72=POP A //73=RET //74=NOP_1 //75=NOP_1 //76=NOP_1 //77=NOP_0 //78=IFZ C }