protected void CompareAgainstUnicorn( Fpsr fpsrMask = Fpsr.None, FpSkips fpSkips = FpSkips.None, FpTolerances fpTolerances = FpTolerances.None) { if (!_unicornAvailable) { return; } if (IgnoreAllExcept_FpsrQc) { fpsrMask &= Fpsr.Qc; } if (fpSkips != FpSkips.None) { ManageFpSkips(fpSkips); } Assert.That(_context.GetX(0), Is.EqualTo(_unicornEmu.X[0]), "X0"); Assert.That(_context.GetX(1), Is.EqualTo(_unicornEmu.X[1]), "X1"); Assert.That(_context.GetX(2), Is.EqualTo(_unicornEmu.X[2]), "X2"); Assert.That(_context.GetX(3), Is.EqualTo(_unicornEmu.X[3]), "X3"); Assert.That(_context.GetX(4), Is.EqualTo(_unicornEmu.X[4])); Assert.That(_context.GetX(5), Is.EqualTo(_unicornEmu.X[5])); Assert.That(_context.GetX(6), Is.EqualTo(_unicornEmu.X[6])); Assert.That(_context.GetX(7), Is.EqualTo(_unicornEmu.X[7])); Assert.That(_context.GetX(8), Is.EqualTo(_unicornEmu.X[8])); Assert.That(_context.GetX(9), Is.EqualTo(_unicornEmu.X[9])); Assert.That(_context.GetX(10), Is.EqualTo(_unicornEmu.X[10])); Assert.That(_context.GetX(11), Is.EqualTo(_unicornEmu.X[11])); Assert.That(_context.GetX(12), Is.EqualTo(_unicornEmu.X[12])); Assert.That(_context.GetX(13), Is.EqualTo(_unicornEmu.X[13])); Assert.That(_context.GetX(14), Is.EqualTo(_unicornEmu.X[14])); Assert.That(_context.GetX(15), Is.EqualTo(_unicornEmu.X[15])); Assert.That(_context.GetX(16), Is.EqualTo(_unicornEmu.X[16])); Assert.That(_context.GetX(17), Is.EqualTo(_unicornEmu.X[17])); Assert.That(_context.GetX(18), Is.EqualTo(_unicornEmu.X[18])); Assert.That(_context.GetX(19), Is.EqualTo(_unicornEmu.X[19])); Assert.That(_context.GetX(20), Is.EqualTo(_unicornEmu.X[20])); Assert.That(_context.GetX(21), Is.EqualTo(_unicornEmu.X[21])); Assert.That(_context.GetX(22), Is.EqualTo(_unicornEmu.X[22])); Assert.That(_context.GetX(23), Is.EqualTo(_unicornEmu.X[23])); Assert.That(_context.GetX(24), Is.EqualTo(_unicornEmu.X[24])); Assert.That(_context.GetX(25), Is.EqualTo(_unicornEmu.X[25])); Assert.That(_context.GetX(26), Is.EqualTo(_unicornEmu.X[26])); Assert.That(_context.GetX(27), Is.EqualTo(_unicornEmu.X[27])); Assert.That(_context.GetX(28), Is.EqualTo(_unicornEmu.X[28])); Assert.That(_context.GetX(29), Is.EqualTo(_unicornEmu.X[29])); Assert.That(_context.GetX(30), Is.EqualTo(_unicornEmu.X[30])); Assert.That(_context.GetX(31), Is.EqualTo(_unicornEmu.SP), "X31"); if (fpTolerances == FpTolerances.None) { Assert.That(V128ToSimdValue(_context.GetV(0)), Is.EqualTo(_unicornEmu.Q[0]), "V0"); } else { ManageFpTolerances(fpTolerances); } Assert.That(V128ToSimdValue(_context.GetV(1)), Is.EqualTo(_unicornEmu.Q[1]), "V1"); Assert.That(V128ToSimdValue(_context.GetV(2)), Is.EqualTo(_unicornEmu.Q[2]), "V2"); Assert.That(V128ToSimdValue(_context.GetV(3)), Is.EqualTo(_unicornEmu.Q[3]), "V3"); Assert.That(V128ToSimdValue(_context.GetV(4)), Is.EqualTo(_unicornEmu.Q[4]), "V4"); Assert.That(V128ToSimdValue(_context.GetV(5)), Is.EqualTo(_unicornEmu.Q[5]), "V5"); Assert.That(V128ToSimdValue(_context.GetV(6)), Is.EqualTo(_unicornEmu.Q[6])); Assert.That(V128ToSimdValue(_context.GetV(7)), Is.EqualTo(_unicornEmu.Q[7])); Assert.That(V128ToSimdValue(_context.GetV(8)), Is.EqualTo(_unicornEmu.Q[8])); Assert.That(V128ToSimdValue(_context.GetV(9)), Is.EqualTo(_unicornEmu.Q[9])); Assert.That(V128ToSimdValue(_context.GetV(10)), Is.EqualTo(_unicornEmu.Q[10])); Assert.That(V128ToSimdValue(_context.GetV(11)), Is.EqualTo(_unicornEmu.Q[11])); Assert.That(V128ToSimdValue(_context.GetV(12)), Is.EqualTo(_unicornEmu.Q[12])); Assert.That(V128ToSimdValue(_context.GetV(13)), Is.EqualTo(_unicornEmu.Q[13])); Assert.That(V128ToSimdValue(_context.GetV(14)), Is.EqualTo(_unicornEmu.Q[14])); Assert.That(V128ToSimdValue(_context.GetV(15)), Is.EqualTo(_unicornEmu.Q[15])); Assert.That(V128ToSimdValue(_context.GetV(16)), Is.EqualTo(_unicornEmu.Q[16])); Assert.That(V128ToSimdValue(_context.GetV(17)), Is.EqualTo(_unicornEmu.Q[17])); Assert.That(V128ToSimdValue(_context.GetV(18)), Is.EqualTo(_unicornEmu.Q[18])); Assert.That(V128ToSimdValue(_context.GetV(19)), Is.EqualTo(_unicornEmu.Q[19])); Assert.That(V128ToSimdValue(_context.GetV(20)), Is.EqualTo(_unicornEmu.Q[20])); Assert.That(V128ToSimdValue(_context.GetV(21)), Is.EqualTo(_unicornEmu.Q[21])); Assert.That(V128ToSimdValue(_context.GetV(22)), Is.EqualTo(_unicornEmu.Q[22])); Assert.That(V128ToSimdValue(_context.GetV(23)), Is.EqualTo(_unicornEmu.Q[23])); Assert.That(V128ToSimdValue(_context.GetV(24)), Is.EqualTo(_unicornEmu.Q[24])); Assert.That(V128ToSimdValue(_context.GetV(25)), Is.EqualTo(_unicornEmu.Q[25])); Assert.That(V128ToSimdValue(_context.GetV(26)), Is.EqualTo(_unicornEmu.Q[26])); Assert.That(V128ToSimdValue(_context.GetV(27)), Is.EqualTo(_unicornEmu.Q[27])); Assert.That(V128ToSimdValue(_context.GetV(28)), Is.EqualTo(_unicornEmu.Q[28])); Assert.That(V128ToSimdValue(_context.GetV(29)), Is.EqualTo(_unicornEmu.Q[29])); Assert.That(V128ToSimdValue(_context.GetV(30)), Is.EqualTo(_unicornEmu.Q[30]), "V30"); Assert.That(V128ToSimdValue(_context.GetV(31)), Is.EqualTo(_unicornEmu.Q[31]), "V31"); Assert.Multiple(() => { Assert.That(_context.GetPstateFlag(PState.VFlag), Is.EqualTo(_unicornEmu.OverflowFlag), "VFlag"); Assert.That(_context.GetPstateFlag(PState.CFlag), Is.EqualTo(_unicornEmu.CarryFlag), "CFlag"); Assert.That(_context.GetPstateFlag(PState.ZFlag), Is.EqualTo(_unicornEmu.ZeroFlag), "ZFlag"); Assert.That(_context.GetPstateFlag(PState.NFlag), Is.EqualTo(_unicornEmu.NegativeFlag), "NFlag"); }); Assert.That((int)_context.Fpcr, Is.EqualTo(_unicornEmu.Fpcr), "Fpcr"); Assert.That((int)_context.Fpsr & (int)fpsrMask, Is.EqualTo(_unicornEmu.Fpsr & (int)fpsrMask), "Fpsr"); if (_usingMemory) { byte[] mem = _memory.GetSpan(DataBaseAddress, (int)Size).ToArray(); byte[] unicornMem = _unicornEmu.MemoryRead(DataBaseAddress, Size); Assert.That(mem, Is.EqualTo(unicornMem), "Data"); } }
protected void CompareAgainstUnicorn( Fpsr fpsrMask = Fpsr.None, FpSkips fpSkips = FpSkips.None, FpTolerances fpTolerances = FpTolerances.None) { if (!_unicornAvailable) { return; } if (fpSkips != FpSkips.None) { ManageFpSkips(fpSkips); } Assert.That(_context.GetX(0), Is.EqualTo(_unicornEmu.R[0])); Assert.That(_context.GetX(1), Is.EqualTo(_unicornEmu.R[1])); Assert.That(_context.GetX(2), Is.EqualTo(_unicornEmu.R[2])); Assert.That(_context.GetX(3), Is.EqualTo(_unicornEmu.R[3])); Assert.That(_context.GetX(4), Is.EqualTo(_unicornEmu.R[4])); Assert.That(_context.GetX(5), Is.EqualTo(_unicornEmu.R[5])); Assert.That(_context.GetX(6), Is.EqualTo(_unicornEmu.R[6])); Assert.That(_context.GetX(7), Is.EqualTo(_unicornEmu.R[7])); Assert.That(_context.GetX(8), Is.EqualTo(_unicornEmu.R[8])); Assert.That(_context.GetX(9), Is.EqualTo(_unicornEmu.R[9])); Assert.That(_context.GetX(10), Is.EqualTo(_unicornEmu.R[10])); Assert.That(_context.GetX(11), Is.EqualTo(_unicornEmu.R[11])); Assert.That(_context.GetX(12), Is.EqualTo(_unicornEmu.R[12])); Assert.That(_context.GetX(13), Is.EqualTo(_unicornEmu.R[13])); Assert.That(_context.GetX(14), Is.EqualTo(_unicornEmu.R[14])); if (fpTolerances == FpTolerances.None) { Assert.That(V128ToSimdValue(_context.GetV(0)), Is.EqualTo(_unicornEmu.Q[0])); } else { ManageFpTolerances(fpTolerances); } Assert.That(V128ToSimdValue(_context.GetV(1)), Is.EqualTo(_unicornEmu.Q[1])); Assert.That(V128ToSimdValue(_context.GetV(2)), Is.EqualTo(_unicornEmu.Q[2])); Assert.That(V128ToSimdValue(_context.GetV(3)), Is.EqualTo(_unicornEmu.Q[3])); Assert.That(V128ToSimdValue(_context.GetV(4)), Is.EqualTo(_unicornEmu.Q[4])); Assert.That(V128ToSimdValue(_context.GetV(5)), Is.EqualTo(_unicornEmu.Q[5])); Assert.That(V128ToSimdValue(_context.GetV(6)), Is.EqualTo(_unicornEmu.Q[6])); Assert.That(V128ToSimdValue(_context.GetV(7)), Is.EqualTo(_unicornEmu.Q[7])); Assert.That(V128ToSimdValue(_context.GetV(8)), Is.EqualTo(_unicornEmu.Q[8])); Assert.That(V128ToSimdValue(_context.GetV(9)), Is.EqualTo(_unicornEmu.Q[9])); Assert.That(V128ToSimdValue(_context.GetV(10)), Is.EqualTo(_unicornEmu.Q[10])); Assert.That(V128ToSimdValue(_context.GetV(11)), Is.EqualTo(_unicornEmu.Q[11])); Assert.That(V128ToSimdValue(_context.GetV(12)), Is.EqualTo(_unicornEmu.Q[12])); Assert.That(V128ToSimdValue(_context.GetV(13)), Is.EqualTo(_unicornEmu.Q[13])); Assert.That(V128ToSimdValue(_context.GetV(14)), Is.EqualTo(_unicornEmu.Q[14])); Assert.That(V128ToSimdValue(_context.GetV(15)), Is.EqualTo(_unicornEmu.Q[15])); Assert.That((int)_context.Fpcr | ((int)_context.Fpsr & (int)fpsrMask), Is.EqualTo(_unicornEmu.Fpscr)); Assert.That(_context.GetPstateFlag(PState.VFlag), Is.EqualTo(_unicornEmu.OverflowFlag)); Assert.That(_context.GetPstateFlag(PState.CFlag), Is.EqualTo(_unicornEmu.CarryFlag)); Assert.That(_context.GetPstateFlag(PState.ZFlag), Is.EqualTo(_unicornEmu.ZeroFlag)); Assert.That(_context.GetPstateFlag(PState.NFlag), Is.EqualTo(_unicornEmu.NegativeFlag)); if (usingMemory) { byte[] meilleureMem = _memory.ReadBytes((long)(0x2000), _size); byte[] unicornMem = _unicornEmu.MemoryRead((ulong)(0x2000), (ulong)_size); for (int i = 0; i < _size; i++) { Assert.AreEqual(meilleureMem[i], unicornMem[i]); } } }
protected void CompareAgainstUnicorn( Fpsr fpsrMask = Fpsr.None, FpSkips fpSkips = FpSkips.None, FpTolerances fpTolerances = FpTolerances.None) { if (!_unicornAvailable) { return; } if (fpSkips != FpSkips.None) { ManageFpSkips(fpSkips); } Assert.That(_context.GetX(0), Is.EqualTo(_unicornEmu.X[0])); Assert.That(_context.GetX(1), Is.EqualTo(_unicornEmu.X[1])); Assert.That(_context.GetX(2), Is.EqualTo(_unicornEmu.X[2])); Assert.That(_context.GetX(3), Is.EqualTo(_unicornEmu.X[3])); Assert.That(_context.GetX(4), Is.EqualTo(_unicornEmu.X[4])); Assert.That(_context.GetX(5), Is.EqualTo(_unicornEmu.X[5])); Assert.That(_context.GetX(6), Is.EqualTo(_unicornEmu.X[6])); Assert.That(_context.GetX(7), Is.EqualTo(_unicornEmu.X[7])); Assert.That(_context.GetX(8), Is.EqualTo(_unicornEmu.X[8])); Assert.That(_context.GetX(9), Is.EqualTo(_unicornEmu.X[9])); Assert.That(_context.GetX(10), Is.EqualTo(_unicornEmu.X[10])); Assert.That(_context.GetX(11), Is.EqualTo(_unicornEmu.X[11])); Assert.That(_context.GetX(12), Is.EqualTo(_unicornEmu.X[12])); Assert.That(_context.GetX(13), Is.EqualTo(_unicornEmu.X[13])); Assert.That(_context.GetX(14), Is.EqualTo(_unicornEmu.X[14])); Assert.That(_context.GetX(15), Is.EqualTo(_unicornEmu.X[15])); Assert.That(_context.GetX(16), Is.EqualTo(_unicornEmu.X[16])); Assert.That(_context.GetX(17), Is.EqualTo(_unicornEmu.X[17])); Assert.That(_context.GetX(18), Is.EqualTo(_unicornEmu.X[18])); Assert.That(_context.GetX(19), Is.EqualTo(_unicornEmu.X[19])); Assert.That(_context.GetX(20), Is.EqualTo(_unicornEmu.X[20])); Assert.That(_context.GetX(21), Is.EqualTo(_unicornEmu.X[21])); Assert.That(_context.GetX(22), Is.EqualTo(_unicornEmu.X[22])); Assert.That(_context.GetX(23), Is.EqualTo(_unicornEmu.X[23])); Assert.That(_context.GetX(24), Is.EqualTo(_unicornEmu.X[24])); Assert.That(_context.GetX(25), Is.EqualTo(_unicornEmu.X[25])); Assert.That(_context.GetX(26), Is.EqualTo(_unicornEmu.X[26])); Assert.That(_context.GetX(27), Is.EqualTo(_unicornEmu.X[27])); Assert.That(_context.GetX(28), Is.EqualTo(_unicornEmu.X[28])); Assert.That(_context.GetX(29), Is.EqualTo(_unicornEmu.X[29])); Assert.That(_context.GetX(30), Is.EqualTo(_unicornEmu.X[30])); Assert.That(_context.GetX(31), Is.EqualTo(_unicornEmu.SP)); if (fpTolerances == FpTolerances.None) { Assert.That(V128ToSimdValue(_context.GetV(0)), Is.EqualTo(_unicornEmu.Q[0])); } else { ManageFpTolerances(fpTolerances); } Assert.That(V128ToSimdValue(_context.GetV(1)), Is.EqualTo(_unicornEmu.Q[1])); Assert.That(V128ToSimdValue(_context.GetV(2)), Is.EqualTo(_unicornEmu.Q[2])); Assert.That(V128ToSimdValue(_context.GetV(3)), Is.EqualTo(_unicornEmu.Q[3])); Assert.That(V128ToSimdValue(_context.GetV(4)), Is.EqualTo(_unicornEmu.Q[4])); Assert.That(V128ToSimdValue(_context.GetV(5)), Is.EqualTo(_unicornEmu.Q[5])); Assert.That(V128ToSimdValue(_context.GetV(6)), Is.EqualTo(_unicornEmu.Q[6])); Assert.That(V128ToSimdValue(_context.GetV(7)), Is.EqualTo(_unicornEmu.Q[7])); Assert.That(V128ToSimdValue(_context.GetV(8)), Is.EqualTo(_unicornEmu.Q[8])); Assert.That(V128ToSimdValue(_context.GetV(9)), Is.EqualTo(_unicornEmu.Q[9])); Assert.That(V128ToSimdValue(_context.GetV(10)), Is.EqualTo(_unicornEmu.Q[10])); Assert.That(V128ToSimdValue(_context.GetV(11)), Is.EqualTo(_unicornEmu.Q[11])); Assert.That(V128ToSimdValue(_context.GetV(12)), Is.EqualTo(_unicornEmu.Q[12])); Assert.That(V128ToSimdValue(_context.GetV(13)), Is.EqualTo(_unicornEmu.Q[13])); Assert.That(V128ToSimdValue(_context.GetV(14)), Is.EqualTo(_unicornEmu.Q[14])); Assert.That(V128ToSimdValue(_context.GetV(15)), Is.EqualTo(_unicornEmu.Q[15])); Assert.That(V128ToSimdValue(_context.GetV(16)), Is.EqualTo(_unicornEmu.Q[16])); Assert.That(V128ToSimdValue(_context.GetV(17)), Is.EqualTo(_unicornEmu.Q[17])); Assert.That(V128ToSimdValue(_context.GetV(18)), Is.EqualTo(_unicornEmu.Q[18])); Assert.That(V128ToSimdValue(_context.GetV(19)), Is.EqualTo(_unicornEmu.Q[19])); Assert.That(V128ToSimdValue(_context.GetV(20)), Is.EqualTo(_unicornEmu.Q[20])); Assert.That(V128ToSimdValue(_context.GetV(21)), Is.EqualTo(_unicornEmu.Q[21])); Assert.That(V128ToSimdValue(_context.GetV(22)), Is.EqualTo(_unicornEmu.Q[22])); Assert.That(V128ToSimdValue(_context.GetV(23)), Is.EqualTo(_unicornEmu.Q[23])); Assert.That(V128ToSimdValue(_context.GetV(24)), Is.EqualTo(_unicornEmu.Q[24])); Assert.That(V128ToSimdValue(_context.GetV(25)), Is.EqualTo(_unicornEmu.Q[25])); Assert.That(V128ToSimdValue(_context.GetV(26)), Is.EqualTo(_unicornEmu.Q[26])); Assert.That(V128ToSimdValue(_context.GetV(27)), Is.EqualTo(_unicornEmu.Q[27])); Assert.That(V128ToSimdValue(_context.GetV(28)), Is.EqualTo(_unicornEmu.Q[28])); Assert.That(V128ToSimdValue(_context.GetV(29)), Is.EqualTo(_unicornEmu.Q[29])); Assert.That(V128ToSimdValue(_context.GetV(30)), Is.EqualTo(_unicornEmu.Q[30])); Assert.That(V128ToSimdValue(_context.GetV(31)), Is.EqualTo(_unicornEmu.Q[31])); Assert.That((int)_context.Fpcr, Is.EqualTo(_unicornEmu.Fpcr)); Assert.That((int)_context.Fpsr & (int)fpsrMask, Is.EqualTo(_unicornEmu.Fpsr & (int)fpsrMask)); Assert.That(_context.GetPstateFlag(PState.VFlag), Is.EqualTo(_unicornEmu.OverflowFlag)); Assert.That(_context.GetPstateFlag(PState.CFlag), Is.EqualTo(_unicornEmu.CarryFlag)); Assert.That(_context.GetPstateFlag(PState.ZFlag), Is.EqualTo(_unicornEmu.ZeroFlag)); Assert.That(_context.GetPstateFlag(PState.NFlag), Is.EqualTo(_unicornEmu.NegativeFlag)); }
internal void SetFpsrFlag(Fpsr flag) { Fpsr |= 1 << (int)flag; }
protected void CompareAgainstUnicorn( Fpsr fpsrMask = Fpsr.None, FpSkips fpSkips = FpSkips.None, FpTolerances fpTolerances = FpTolerances.None) { if (!_unicornAvailable) { return; } if (fpSkips != FpSkips.None) { ManageFpSkips(fpSkips); } Assert.That(_thread.ThreadState.X0, Is.EqualTo(_unicornEmu.X[0])); Assert.That(_thread.ThreadState.X1, Is.EqualTo(_unicornEmu.X[1])); Assert.That(_thread.ThreadState.X2, Is.EqualTo(_unicornEmu.X[2])); Assert.That(_thread.ThreadState.X3, Is.EqualTo(_unicornEmu.X[3])); Assert.That(_thread.ThreadState.X4, Is.EqualTo(_unicornEmu.X[4])); Assert.That(_thread.ThreadState.X5, Is.EqualTo(_unicornEmu.X[5])); Assert.That(_thread.ThreadState.X6, Is.EqualTo(_unicornEmu.X[6])); Assert.That(_thread.ThreadState.X7, Is.EqualTo(_unicornEmu.X[7])); Assert.That(_thread.ThreadState.X8, Is.EqualTo(_unicornEmu.X[8])); Assert.That(_thread.ThreadState.X9, Is.EqualTo(_unicornEmu.X[9])); Assert.That(_thread.ThreadState.X10, Is.EqualTo(_unicornEmu.X[10])); Assert.That(_thread.ThreadState.X11, Is.EqualTo(_unicornEmu.X[11])); Assert.That(_thread.ThreadState.X12, Is.EqualTo(_unicornEmu.X[12])); Assert.That(_thread.ThreadState.X13, Is.EqualTo(_unicornEmu.X[13])); Assert.That(_thread.ThreadState.X14, Is.EqualTo(_unicornEmu.X[14])); Assert.That(_thread.ThreadState.X15, Is.EqualTo(_unicornEmu.X[15])); Assert.That(_thread.ThreadState.X16, Is.EqualTo(_unicornEmu.X[16])); Assert.That(_thread.ThreadState.X17, Is.EqualTo(_unicornEmu.X[17])); Assert.That(_thread.ThreadState.X18, Is.EqualTo(_unicornEmu.X[18])); Assert.That(_thread.ThreadState.X19, Is.EqualTo(_unicornEmu.X[19])); Assert.That(_thread.ThreadState.X20, Is.EqualTo(_unicornEmu.X[20])); Assert.That(_thread.ThreadState.X21, Is.EqualTo(_unicornEmu.X[21])); Assert.That(_thread.ThreadState.X22, Is.EqualTo(_unicornEmu.X[22])); Assert.That(_thread.ThreadState.X23, Is.EqualTo(_unicornEmu.X[23])); Assert.That(_thread.ThreadState.X24, Is.EqualTo(_unicornEmu.X[24])); Assert.That(_thread.ThreadState.X25, Is.EqualTo(_unicornEmu.X[25])); Assert.That(_thread.ThreadState.X26, Is.EqualTo(_unicornEmu.X[26])); Assert.That(_thread.ThreadState.X27, Is.EqualTo(_unicornEmu.X[27])); Assert.That(_thread.ThreadState.X28, Is.EqualTo(_unicornEmu.X[28])); Assert.That(_thread.ThreadState.X29, Is.EqualTo(_unicornEmu.X[29])); Assert.That(_thread.ThreadState.X30, Is.EqualTo(_unicornEmu.X[30])); Assert.That(_thread.ThreadState.X31, Is.EqualTo(_unicornEmu.SP)); if (fpTolerances == FpTolerances.None) { Assert.That(_thread.ThreadState.V0, Is.EqualTo(_unicornEmu.Q[0])); } else { ManageFpTolerances(fpTolerances); } Assert.That(_thread.ThreadState.V1, Is.EqualTo(_unicornEmu.Q[1])); Assert.That(_thread.ThreadState.V2, Is.EqualTo(_unicornEmu.Q[2])); Assert.That(_thread.ThreadState.V3, Is.EqualTo(_unicornEmu.Q[3])); Assert.That(_thread.ThreadState.V4, Is.EqualTo(_unicornEmu.Q[4])); Assert.That(_thread.ThreadState.V5, Is.EqualTo(_unicornEmu.Q[5])); Assert.That(_thread.ThreadState.V6, Is.EqualTo(_unicornEmu.Q[6])); Assert.That(_thread.ThreadState.V7, Is.EqualTo(_unicornEmu.Q[7])); Assert.That(_thread.ThreadState.V8, Is.EqualTo(_unicornEmu.Q[8])); Assert.That(_thread.ThreadState.V9, Is.EqualTo(_unicornEmu.Q[9])); Assert.That(_thread.ThreadState.V10, Is.EqualTo(_unicornEmu.Q[10])); Assert.That(_thread.ThreadState.V11, Is.EqualTo(_unicornEmu.Q[11])); Assert.That(_thread.ThreadState.V12, Is.EqualTo(_unicornEmu.Q[12])); Assert.That(_thread.ThreadState.V13, Is.EqualTo(_unicornEmu.Q[13])); Assert.That(_thread.ThreadState.V14, Is.EqualTo(_unicornEmu.Q[14])); Assert.That(_thread.ThreadState.V15, Is.EqualTo(_unicornEmu.Q[15])); Assert.That(_thread.ThreadState.V16, Is.EqualTo(_unicornEmu.Q[16])); Assert.That(_thread.ThreadState.V17, Is.EqualTo(_unicornEmu.Q[17])); Assert.That(_thread.ThreadState.V18, Is.EqualTo(_unicornEmu.Q[18])); Assert.That(_thread.ThreadState.V19, Is.EqualTo(_unicornEmu.Q[19])); Assert.That(_thread.ThreadState.V20, Is.EqualTo(_unicornEmu.Q[20])); Assert.That(_thread.ThreadState.V21, Is.EqualTo(_unicornEmu.Q[21])); Assert.That(_thread.ThreadState.V22, Is.EqualTo(_unicornEmu.Q[22])); Assert.That(_thread.ThreadState.V23, Is.EqualTo(_unicornEmu.Q[23])); Assert.That(_thread.ThreadState.V24, Is.EqualTo(_unicornEmu.Q[24])); Assert.That(_thread.ThreadState.V25, Is.EqualTo(_unicornEmu.Q[25])); Assert.That(_thread.ThreadState.V26, Is.EqualTo(_unicornEmu.Q[26])); Assert.That(_thread.ThreadState.V27, Is.EqualTo(_unicornEmu.Q[27])); Assert.That(_thread.ThreadState.V28, Is.EqualTo(_unicornEmu.Q[28])); Assert.That(_thread.ThreadState.V29, Is.EqualTo(_unicornEmu.Q[29])); Assert.That(_thread.ThreadState.V30, Is.EqualTo(_unicornEmu.Q[30])); Assert.That(_thread.ThreadState.V31, Is.EqualTo(_unicornEmu.Q[31])); Assert.That(_thread.ThreadState.Fpcr, Is.EqualTo(_unicornEmu.Fpcr)); Assert.That(_thread.ThreadState.Fpsr & (int)fpsrMask, Is.EqualTo(_unicornEmu.Fpsr & (int)fpsrMask)); Assert.That(_thread.ThreadState.Overflow, Is.EqualTo(_unicornEmu.OverflowFlag)); Assert.That(_thread.ThreadState.Carry, Is.EqualTo(_unicornEmu.CarryFlag)); Assert.That(_thread.ThreadState.Zero, Is.EqualTo(_unicornEmu.ZeroFlag)); Assert.That(_thread.ThreadState.Negative, Is.EqualTo(_unicornEmu.NegativeFlag)); }
protected void CompareAgainstUnicorn( Fpsr fpsrMask = Fpsr.None, FpSkips fpSkips = FpSkips.None, FpTolerances fpTolerances = FpTolerances.None) { if (!_unicornAvailable) { return; } if (fpSkips != FpSkips.None) { ManageFpSkips(fpSkips); } Assert.That(_context.GetX(0), Is.EqualTo(_unicornEmu.R[0]), "R0"); Assert.That(_context.GetX(1), Is.EqualTo(_unicornEmu.R[1]), "R1"); Assert.That(_context.GetX(2), Is.EqualTo(_unicornEmu.R[2]), "R2"); Assert.That(_context.GetX(3), Is.EqualTo(_unicornEmu.R[3]), "R3"); Assert.That(_context.GetX(4), Is.EqualTo(_unicornEmu.R[4])); Assert.That(_context.GetX(5), Is.EqualTo(_unicornEmu.R[5])); Assert.That(_context.GetX(6), Is.EqualTo(_unicornEmu.R[6])); Assert.That(_context.GetX(7), Is.EqualTo(_unicornEmu.R[7])); Assert.That(_context.GetX(8), Is.EqualTo(_unicornEmu.R[8])); Assert.That(_context.GetX(9), Is.EqualTo(_unicornEmu.R[9])); Assert.That(_context.GetX(10), Is.EqualTo(_unicornEmu.R[10])); Assert.That(_context.GetX(11), Is.EqualTo(_unicornEmu.R[11])); Assert.That(_context.GetX(12), Is.EqualTo(_unicornEmu.R[12])); Assert.That(_context.GetX(13), Is.EqualTo(_unicornEmu.SP), "SP"); Assert.That(_context.GetX(14), Is.EqualTo(_unicornEmu.R[14])); if (fpTolerances == FpTolerances.None) { Assert.That(V128ToSimdValue(_context.GetV(0)), Is.EqualTo(_unicornEmu.Q[0]), "V0"); } else { ManageFpTolerances(fpTolerances); } Assert.That(V128ToSimdValue(_context.GetV(1)), Is.EqualTo(_unicornEmu.Q[1]), "V1"); Assert.That(V128ToSimdValue(_context.GetV(2)), Is.EqualTo(_unicornEmu.Q[2]), "V2"); Assert.That(V128ToSimdValue(_context.GetV(3)), Is.EqualTo(_unicornEmu.Q[3]), "V3"); Assert.That(V128ToSimdValue(_context.GetV(4)), Is.EqualTo(_unicornEmu.Q[4]), "V4"); Assert.That(V128ToSimdValue(_context.GetV(5)), Is.EqualTo(_unicornEmu.Q[5]), "V5"); Assert.That(V128ToSimdValue(_context.GetV(6)), Is.EqualTo(_unicornEmu.Q[6])); Assert.That(V128ToSimdValue(_context.GetV(7)), Is.EqualTo(_unicornEmu.Q[7])); Assert.That(V128ToSimdValue(_context.GetV(8)), Is.EqualTo(_unicornEmu.Q[8])); Assert.That(V128ToSimdValue(_context.GetV(9)), Is.EqualTo(_unicornEmu.Q[9])); Assert.That(V128ToSimdValue(_context.GetV(10)), Is.EqualTo(_unicornEmu.Q[10])); Assert.That(V128ToSimdValue(_context.GetV(11)), Is.EqualTo(_unicornEmu.Q[11])); Assert.That(V128ToSimdValue(_context.GetV(12)), Is.EqualTo(_unicornEmu.Q[12])); Assert.That(V128ToSimdValue(_context.GetV(13)), Is.EqualTo(_unicornEmu.Q[13])); Assert.That(V128ToSimdValue(_context.GetV(14)), Is.EqualTo(_unicornEmu.Q[14]), "V14"); Assert.That(V128ToSimdValue(_context.GetV(15)), Is.EqualTo(_unicornEmu.Q[15]), "V15"); Assert.Multiple(() => { Assert.That(_context.GetPstateFlag(PState.QFlag), Is.EqualTo(_unicornEmu.QFlag), "QFlag"); Assert.That(_context.GetPstateFlag(PState.VFlag), Is.EqualTo(_unicornEmu.OverflowFlag), "VFlag"); Assert.That(_context.GetPstateFlag(PState.CFlag), Is.EqualTo(_unicornEmu.CarryFlag), "CFlag"); Assert.That(_context.GetPstateFlag(PState.ZFlag), Is.EqualTo(_unicornEmu.ZeroFlag), "ZFlag"); Assert.That(_context.GetPstateFlag(PState.NFlag), Is.EqualTo(_unicornEmu.NegativeFlag), "NFlag"); }); Assert.That((int)GetFpscr() & (int)fpsrMask, Is.EqualTo(_unicornEmu.Fpscr & (int)fpsrMask), "Fpscr"); if (_usingMemory) { byte[] mem = _memory.GetSpan(DataBaseAddress, (int)Size).ToArray(); byte[] unicornMem = _unicornEmu.MemoryRead(DataBaseAddress, Size); Assert.That(mem, Is.EqualTo(unicornMem), "Data"); } }