public void MOD_AB_AiAi(int ip, EngineWarrior warrior) { int reg_IR_ValueB; int reg_IR_ValueCpyA = ValuesA[ip]; int reg_IR_ValueCpyB = ValuesB[ip]; int reg_AdrA; int reg_AdrB; int reg_AA_Value; int reg_direct; bool reg_die = false; reg_direct = mod(reg_IR_ValueCpyA + ip); reg_AdrA = mod(reg_direct + ValuesA[reg_direct]); reg_AA_Value = ValuesA[reg_AdrA]; reg_direct = mod(reg_IR_ValueCpyB + ip); reg_AdrB = mod(reg_direct + ValuesA[reg_direct]); reg_IR_ValueB = ValuesB[reg_AdrB]; if (reg_AA_Value == 0) reg_die = true; else ValuesB[reg_AdrB] = reg_IR_ValueB % reg_AA_Value; ip++; if (!reg_die) { warrior.Tasks.Enqueue(mod(ip)); } else { warrior.DeadTasksCount++; Died(ip); } }
public void NOP_AB_AmAi(int ip, EngineWarrior warrior) { int reg_IR_ValueCpyA = ValuesA[ip]; int reg_direct; reg_direct = mod(reg_IR_ValueCpyA + ip); dec(ref ValuesA[reg_direct]); ip++; warrior.Tasks.Enqueue(mod(ip)); }
public void JMP_AB_AiAi(int ip, EngineWarrior warrior) { int reg_IR_ValueCpyA = ValuesA[ip]; int reg_AdrA; int reg_direct; reg_direct = mod(reg_IR_ValueCpyA + ip); reg_AdrA = mod(reg_direct + ValuesA[reg_direct]); ip = reg_AdrA; warrior.Tasks.Enqueue(mod(ip)); }
public void DAT_AB_AiAi(int ip, EngineWarrior warrior) { bool reg_die; reg_die = true; if (!reg_die) { warrior.Tasks.Enqueue(mod(ip)); } else { warrior.DeadTasksCount++; Died(ip); } }
public void MOV_AB_AiAi(int ip, EngineWarrior warrior) { int reg_IR_ValueCpyA = ValuesA[ip]; int reg_IR_ValueCpyB = ValuesB[ip]; int reg_AdrA; int reg_AdrB; int reg_AA_Value; int reg_direct; reg_direct = mod(reg_IR_ValueCpyA + ip); reg_AdrA = mod(reg_direct + ValuesA[reg_direct]); reg_AA_Value = ValuesA[reg_AdrA]; reg_direct = mod(reg_IR_ValueCpyB + ip); reg_AdrB = mod(reg_direct + ValuesA[reg_direct]); ValuesB[reg_AdrB] = reg_AA_Value; ip++; warrior.Tasks.Enqueue(mod(ip)); }
public void SUB_AB_AiAm(int ip, EngineWarrior warrior) { int reg_IR_ValueB; int reg_IR_ValueCpyA = ValuesA[ip]; int reg_IR_ValueCpyB = ValuesB[ip]; int reg_AdrA; int reg_AdrB; int reg_AA_Value; int reg_direct; reg_direct = mod(reg_IR_ValueCpyA + ip); reg_AdrA = mod(reg_direct + ValuesA[reg_direct]); reg_AA_Value = ValuesA[reg_AdrA]; reg_direct = mod(reg_IR_ValueCpyB + ip); reg_AdrB = mod(reg_direct + dec(ref ValuesA[reg_direct])); reg_IR_ValueB = ValuesB[reg_AdrB]; ValuesB[reg_AdrB] = reg_IR_ValueB - reg_AA_Value; if (ValuesB[reg_AdrB] < 0) ValuesB[reg_AdrB] += coreSize; ip++; warrior.Tasks.Enqueue(mod(ip)); }
public void SPL_AB_AiAi(int ip, EngineWarrior warrior) { int reg_IR_ValueCpyA = ValuesA[ip]; int reg_AdrA; int reg_direct; reg_direct = mod(reg_IR_ValueCpyA + ip); reg_AdrA = mod(reg_direct + ValuesA[reg_direct]); if (warrior.LiveTasks + 1 < rules.MaxProcesses) { warrior.Tasks.Enqueue(mod(ip + 1)); ip = reg_AdrA; Split(reg_AdrA); } else { ip++; } warrior.Tasks.Enqueue(mod(ip)); }
public void ADD_AB_AiBi(int ip, EngineWarrior warrior) { int reg_IR_ValueB; int reg_IR_ValueCpyA = ValuesA[ip]; int reg_IR_ValueCpyB = ValuesB[ip]; int reg_AdrA; int reg_AdrB; int reg_AA_Value; int reg_direct; reg_direct = mod(reg_IR_ValueCpyA + ip); reg_AdrA = mod(reg_direct + ValuesA[reg_direct]); reg_AA_Value = ValuesA[reg_AdrA]; reg_direct = mod(reg_IR_ValueCpyB + ip); reg_AdrB = mod(reg_direct + ValuesB[reg_direct]); reg_IR_ValueB = ValuesB[reg_AdrB]; ValuesB[reg_AdrB] = reg_IR_ValueB + reg_AA_Value; if (ValuesB[reg_AdrB] >= coreSize) ValuesB[reg_AdrB] -= coreSize; ip++; warrior.Tasks.Enqueue(mod(ip)); }
public void LDP_AB_AiAi(int ip, EngineWarrior warrior) { int reg_IR_ValueCpyA = ValuesA[ip]; int reg_IR_ValueCpyB = ValuesB[ip]; int reg_AdrA; int reg_AdrB; int reg_AA_Value; int reg_direct; int reg_psAddress; reg_direct = mod(reg_IR_ValueCpyA + ip); reg_AdrA = mod(reg_direct + ValuesA[reg_direct]); reg_AA_Value = ValuesA[reg_AdrA]; reg_direct = mod(reg_IR_ValueCpyB + ip); reg_AdrB = mod(reg_direct + ValuesA[reg_direct]); reg_psAddress = Instruction.Mod(reg_AA_Value, rules.PSpaceSize); ValuesB[reg_AdrB] = warrior.GetPSpaceValue(reg_psAddress); ip++; warrior.Tasks.Enqueue(mod(ip)); }
public void DAT_AB_AiBm(int ip, EngineWarrior warrior) { int reg_IR_ValueCpyA = ValuesA[ip]; int reg_IR_ValueCpyB = ValuesB[ip]; int reg_direct; bool reg_die; reg_direct = mod(reg_IR_ValueCpyA + ip); reg_direct = mod(reg_IR_ValueCpyB + ip); dec(ref ValuesB[reg_direct]); reg_die = true; if (!reg_die) { warrior.Tasks.Enqueue(mod(ip)); } else { warrior.DeadTasksCount++; Died(ip); } }
public void JMZ_AB_AiAi(int ip, EngineWarrior warrior) { int reg_IR_ValueB; int reg_IR_ValueCpyA = ValuesA[ip]; int reg_IR_ValueCpyB = ValuesB[ip]; int reg_AdrA; int reg_AdrB; int reg_direct; bool reg_jump; reg_direct = mod(reg_IR_ValueCpyA + ip); reg_AdrA = mod(reg_direct + ValuesA[reg_direct]); reg_direct = mod(reg_IR_ValueCpyB + ip); reg_AdrB = mod(reg_direct + ValuesA[reg_direct]); reg_IR_ValueB = ValuesB[reg_AdrB]; reg_jump = (reg_IR_ValueB == 0); if (reg_jump) ip = reg_AdrA; else ip++; warrior.Tasks.Enqueue(mod(ip)); }
public void SNE_AB_AiAm(int ip, EngineWarrior warrior) { int reg_IR_ValueB; int reg_IR_ValueCpyA = ValuesA[ip]; int reg_IR_ValueCpyB = ValuesB[ip]; int reg_AdrA; int reg_AdrB; int reg_AA_Value; int reg_direct; bool reg_jump; reg_direct = mod(reg_IR_ValueCpyA + ip); reg_AdrA = mod(reg_direct + ValuesA[reg_direct]); reg_AA_Value = ValuesA[reg_AdrA]; reg_direct = mod(reg_IR_ValueCpyB + ip); reg_AdrB = mod(reg_direct + dec(ref ValuesA[reg_direct])); reg_IR_ValueB = ValuesB[reg_AdrB]; reg_jump = (reg_IR_ValueB != reg_AA_Value); if (reg_jump) ip += 2; else ip++; warrior.Tasks.Enqueue(mod(ip)); }
public void MOD_B_ImIm(int ip, EngineWarrior warrior) { int reg_IR_ValueA; int reg_IR_ValueB = ValuesB[ip]; int reg_AdrB; bool reg_die = false; reg_IR_ValueA = reg_IR_ValueB; reg_AdrB = ip; if (reg_IR_ValueA == 0) reg_die = true; else ValuesB[reg_AdrB] = reg_IR_ValueB % reg_IR_ValueA; ip++; if (!reg_die) { warrior.Tasks.Enqueue(mod(ip)); } else { warrior.DeadTasksCount++; Died(ip); } }
public void MOD_B_ImBp(int ip, EngineWarrior warrior) { int reg_IR_ValueA; int reg_IR_ValueB = ValuesB[ip]; int reg_IR_ValueCpyB = ValuesB[ip]; int reg_AdrB; int reg_direct; bool reg_die = false; reg_IR_ValueA = reg_IR_ValueB; reg_direct = mod(reg_IR_ValueCpyB + ip); reg_AdrB = mod(reg_direct + ValuesB[reg_direct]); reg_IR_ValueB = ValuesB[reg_AdrB]; inc(ref ValuesB[reg_direct]); if (reg_IR_ValueA == 0) reg_die = true; else ValuesB[reg_AdrB] = reg_IR_ValueB % reg_IR_ValueA; ip++; if (!reg_die) { warrior.Tasks.Enqueue(mod(ip)); } else { warrior.DeadTasksCount++; Died(ip); } }
public void MOD_BA_DiIm(int ip, EngineWarrior warrior) { int reg_IR_ValueA; int reg_IR_ValueCpyA = ValuesA[ip]; int reg_AdrB; int reg_AB_Value = ValuesA[ip]; int reg_direct; bool reg_die = false; reg_direct = mod(reg_IR_ValueCpyA + ip); reg_IR_ValueA = ValuesB[reg_direct]; reg_AdrB = ip; if (reg_IR_ValueA == 0) reg_die = true; else ValuesA[reg_AdrB] = reg_AB_Value % reg_IR_ValueA; ip++; if (!reg_die) { warrior.Tasks.Enqueue(mod(ip)); } else { warrior.DeadTasksCount++; Died(ip); } }
public void MOD_A_ImIm(int ip, EngineWarrior warrior) { int reg_AdrB; int reg_AA_Value = ValuesA[ip]; int reg_AB_Value = ValuesA[ip]; bool reg_die = false; reg_AdrB = ip; if (reg_AA_Value == 0) reg_die = true; else ValuesA[reg_AdrB] = reg_AB_Value % reg_AA_Value; ip++; if (!reg_die) { warrior.Tasks.Enqueue(mod(ip)); } else { warrior.DeadTasksCount++; Died(ip); } }
public EngineEvent(EngineInstruction executedInstruction, int cycles, int cyclesLeft, int ip, EngineWarrior warrior, StepResult prevStepResult) { ExecutedInstruction = executedInstruction; Cycles = cycles; CyclesLeft = cyclesLeft; Ip = ip; Warrior = warrior; PrevStepResult = prevStepResult; instructionsChanged = new Stack<EngineInstruction>(); }
public void SUB_I_ImDi(int ip, EngineWarrior warrior) { int reg_IR_ValueA; int reg_IR_ValueB = ValuesB[ip]; int reg_IR_ValueCpyB = ValuesB[ip]; int reg_AdrB; int reg_AA_Value = ValuesA[ip]; int reg_AB_Value; int reg_direct; reg_IR_ValueA = reg_IR_ValueB; reg_direct = mod(reg_IR_ValueCpyB + ip); reg_AdrB = reg_direct; reg_AB_Value = ValuesA[reg_direct]; reg_IR_ValueB = ValuesB[reg_direct]; ValuesA[reg_AdrB] = reg_AB_Value - reg_AA_Value; if (ValuesA[reg_AdrB] < 0) ValuesA[reg_AdrB] += coreSize; ValuesB[reg_AdrB] = reg_IR_ValueB - reg_IR_ValueA; if (ValuesB[reg_AdrB] < 0) ValuesB[reg_AdrB] += coreSize; ip++; warrior.Tasks.Enqueue(mod(ip)); }
public void LDP_X_ImBp(int ip, EngineWarrior warrior) { int reg_IR_ValueA; int reg_IR_ValueB = ValuesB[ip]; int reg_IR_ValueCpyB = ValuesB[ip]; int reg_AdrB; int reg_direct; int reg_psAddress; reg_IR_ValueA = reg_IR_ValueB; reg_direct = mod(reg_IR_ValueCpyB + ip); reg_AdrB = mod(reg_direct + ValuesB[reg_direct]); inc(ref ValuesB[reg_direct]); reg_psAddress = Instruction.Mod(reg_IR_ValueA, rules.PSpaceSize); ValuesB[reg_AdrB] = warrior.GetPSpaceValue(reg_psAddress); ip++; warrior.Tasks.Enqueue(mod(ip)); }
public void ADD_X_BmIm(int ip, EngineWarrior warrior) { int reg_IR_ValueA; int reg_IR_ValueB = ValuesB[ip]; int reg_IR_ValueCpyA = ValuesA[ip]; int reg_AdrA; int reg_AdrB; int reg_AA_Value; int reg_AB_Value = ValuesA[ip]; int reg_direct; reg_direct = mod(reg_IR_ValueCpyA + ip); reg_AdrA = mod(reg_direct + dec(ref ValuesB[reg_direct])); reg_AA_Value = ValuesA[reg_AdrA]; reg_IR_ValueA = ValuesB[reg_AdrA]; reg_AdrB = ip; ValuesB[reg_AdrB] = reg_IR_ValueB + reg_AA_Value; if (ValuesB[reg_AdrB] >= coreSize) ValuesB[reg_AdrB] -= coreSize; ValuesA[reg_AdrB] = reg_AB_Value + reg_IR_ValueA; if (ValuesA[reg_AdrB] >= coreSize) ValuesA[reg_AdrB] -= coreSize; ip++; warrior.Tasks.Enqueue(mod(ip)); }
public void ADD_I_ImIm(int ip, EngineWarrior warrior) { int reg_IR_ValueA; int reg_IR_ValueB = ValuesB[ip]; int reg_AdrB; int reg_AA_Value = ValuesA[ip]; int reg_AB_Value = ValuesA[ip]; reg_IR_ValueA = reg_IR_ValueB; reg_AdrB = ip; ValuesA[reg_AdrB] = reg_AB_Value + reg_AA_Value; if (ValuesA[reg_AdrB] >= coreSize) ValuesA[reg_AdrB] -= coreSize; ValuesB[reg_AdrB] = reg_IR_ValueB + reg_IR_ValueA; if (ValuesB[reg_AdrB] >= coreSize) ValuesB[reg_AdrB] -= coreSize; ip++; warrior.Tasks.Enqueue(mod(ip)); }
public void SUB_BA_BpIm(int ip, EngineWarrior warrior) { int reg_IR_ValueA; int reg_IR_ValueCpyA = ValuesA[ip]; int reg_AdrA; int reg_AdrB; int reg_AB_Value = ValuesA[ip]; int reg_direct; reg_direct = mod(reg_IR_ValueCpyA + ip); reg_AdrA = mod(reg_direct + ValuesB[reg_direct]); reg_IR_ValueA = ValuesB[reg_AdrA]; inc(ref ValuesB[reg_direct]); reg_AdrB = ip; ValuesA[reg_AdrB] = reg_AB_Value - reg_IR_ValueA; if (ValuesA[reg_AdrB] < 0) ValuesA[reg_AdrB] += coreSize; ip++; warrior.Tasks.Enqueue(mod(ip)); }
public void ADD_B_ImDi(int ip, EngineWarrior warrior) { int reg_IR_ValueA; int reg_IR_ValueB = ValuesB[ip]; int reg_IR_ValueCpyB = ValuesB[ip]; int reg_AdrB; int reg_direct; reg_IR_ValueA = reg_IR_ValueB; reg_direct = mod(reg_IR_ValueCpyB + ip); reg_AdrB = reg_direct; reg_IR_ValueB = ValuesB[reg_direct]; ValuesB[reg_AdrB] = reg_IR_ValueB + reg_IR_ValueA; if (ValuesB[reg_AdrB] >= coreSize) ValuesB[reg_AdrB] -= coreSize; ip++; warrior.Tasks.Enqueue(mod(ip)); }
public void ADD_BA_ImBp(int ip, EngineWarrior warrior) { int reg_IR_ValueA; int reg_IR_ValueB = ValuesB[ip]; int reg_IR_ValueCpyB = ValuesB[ip]; int reg_AdrB; int reg_AB_Value; int reg_direct; reg_IR_ValueA = reg_IR_ValueB; reg_direct = mod(reg_IR_ValueCpyB + ip); reg_AdrB = mod(reg_direct + ValuesB[reg_direct]); reg_AB_Value = ValuesA[reg_AdrB]; inc(ref ValuesB[reg_direct]); ValuesA[reg_AdrB] = reg_AB_Value + reg_IR_ValueA; if (ValuesA[reg_AdrB] >= coreSize) ValuesA[reg_AdrB] -= coreSize; ip++; warrior.Tasks.Enqueue(mod(ip)); }
public void ADD_A_DiIm(int ip, EngineWarrior warrior) { int reg_IR_ValueCpyA = ValuesA[ip]; int reg_AdrB; int reg_AA_Value; int reg_AB_Value = ValuesA[ip]; int reg_direct; reg_direct = mod(reg_IR_ValueCpyA + ip); reg_AA_Value = ValuesA[reg_direct]; reg_AdrB = ip; ValuesA[reg_AdrB] = reg_AB_Value + reg_AA_Value; if (ValuesA[reg_AdrB] >= coreSize) ValuesA[reg_AdrB] -= coreSize; ip++; warrior.Tasks.Enqueue(mod(ip)); }
public void LDP_X_BmIm(int ip, EngineWarrior warrior) { int reg_IR_ValueA; int reg_IR_ValueCpyA = ValuesA[ip]; int reg_AdrA; int reg_AdrB; int reg_direct; int reg_psAddress; reg_direct = mod(reg_IR_ValueCpyA + ip); reg_AdrA = mod(reg_direct + dec(ref ValuesB[reg_direct])); reg_IR_ValueA = ValuesB[reg_AdrA]; reg_AdrB = ip; reg_psAddress = Instruction.Mod(reg_IR_ValueA, rules.PSpaceSize); ValuesB[reg_AdrB] = warrior.GetPSpaceValue(reg_psAddress); ip++; warrior.Tasks.Enqueue(mod(ip)); }
public void SUB_B_ImBp(int ip, EngineWarrior warrior) { int reg_IR_ValueA; int reg_IR_ValueB = ValuesB[ip]; int reg_IR_ValueCpyB = ValuesB[ip]; int reg_AdrB; int reg_direct; reg_IR_ValueA = reg_IR_ValueB; reg_direct = mod(reg_IR_ValueCpyB + ip); reg_AdrB = mod(reg_direct + ValuesB[reg_direct]); reg_IR_ValueB = ValuesB[reg_AdrB]; inc(ref ValuesB[reg_direct]); ValuesB[reg_AdrB] = reg_IR_ValueB - reg_IR_ValueA; if (ValuesB[reg_AdrB] < 0) ValuesB[reg_AdrB] += coreSize; ip++; warrior.Tasks.Enqueue(mod(ip)); }
public void SUB_F_ImIm(int ip, EngineWarrior warrior) { int reg_IR_ValueA; int reg_IR_ValueB = ValuesB[ip]; int reg_AdrB; int reg_AA_Value = ValuesA[ip]; int reg_AB_Value = ValuesA[ip]; reg_IR_ValueA = reg_IR_ValueB; reg_AdrB = ip; ValuesA[reg_AdrB] = reg_AB_Value - reg_AA_Value; if (ValuesA[reg_AdrB] < 0) ValuesA[reg_AdrB] += coreSize; ValuesB[reg_AdrB] = reg_IR_ValueB - reg_IR_ValueA; if (ValuesB[reg_AdrB] < 0) ValuesB[reg_AdrB] += coreSize; ip++; warrior.Tasks.Enqueue(mod(ip)); }
public void LDP_X_ImIm(int ip, EngineWarrior warrior) { int reg_IR_ValueA; int reg_IR_ValueB = ValuesB[ip]; int reg_AdrB; int reg_psAddress; reg_IR_ValueA = reg_IR_ValueB; reg_AdrB = ip; reg_psAddress = Instruction.Mod(reg_IR_ValueA, rules.PSpaceSize); ValuesB[reg_AdrB] = warrior.GetPSpaceValue(reg_psAddress); ip++; warrior.Tasks.Enqueue(mod(ip)); }
public void SUB_B_DiIm(int ip, EngineWarrior warrior) { int reg_IR_ValueA; int reg_IR_ValueB = ValuesB[ip]; int reg_IR_ValueCpyA = ValuesA[ip]; int reg_AdrB; int reg_direct; reg_direct = mod(reg_IR_ValueCpyA + ip); reg_IR_ValueA = ValuesB[reg_direct]; reg_AdrB = ip; ValuesB[reg_AdrB] = reg_IR_ValueB - reg_IR_ValueA; if (ValuesB[reg_AdrB] < 0) ValuesB[reg_AdrB] += coreSize; ip++; warrior.Tasks.Enqueue(mod(ip)); }