* Fix duplicate armv7rf test name * Small refactor of armv7rf * Proper test classes names
91 lines
2.5 KiB
Python
91 lines
2.5 KiB
Python
import unittest
|
|
|
|
from manticore.core.cpu import bitwise
|
|
|
|
|
|
class BitwiseTest(unittest.TestCase):
|
|
_multiprocess_can_split_ = True
|
|
|
|
def test_mask(self):
|
|
masked = bitwise.Mask(8)
|
|
self.assertEqual(masked, 0xff)
|
|
|
|
def test_get_bits(self):
|
|
val = 0xAABBCCDD
|
|
result = bitwise.GetNBits(val, 8)
|
|
self.assertEqual(result, 0xDD)
|
|
|
|
def test_lsl_nocarry(self):
|
|
val = 0xAA00
|
|
result, carry = bitwise.LSL_C(val, 4, 32)
|
|
self.assertEqual(result, 0x0AA000)
|
|
self.assertEqual(carry , 0)
|
|
|
|
def test_lsl_carry(self):
|
|
val = 0x80000000
|
|
result, carry = bitwise.LSL_C(val, 1, 32)
|
|
print hex(result), "", hex(carry)
|
|
self.assertEqual(result, 0)
|
|
self.assertEqual(carry , 1)
|
|
|
|
def test_lsr_nocarry(self):
|
|
val = 0xFFF7
|
|
result, carry = bitwise.LSR_C(val, 4, 32)
|
|
self.assertEqual(result, 0x0FFF)
|
|
self.assertEqual(carry , 0)
|
|
|
|
def test_lsr_carry(self):
|
|
val = 0xFFF8
|
|
result, carry = bitwise.LSR_C(val, 4, 32)
|
|
self.assertEqual(result, 0x0FFF)
|
|
self.assertEqual(carry , 1)
|
|
|
|
def test_asr_nocarry(self):
|
|
val = 0x00F0
|
|
result, carry = bitwise.ASR_C(val, 4, 32)
|
|
self.assertEqual(result, 0xF)
|
|
self.assertEqual(carry, 0)
|
|
|
|
def test_asr_carry(self):
|
|
val = 0x0003
|
|
result, carry = bitwise.ASR_C(val, 1, 32)
|
|
self.assertEqual(result, 1)
|
|
self.assertEqual(carry, 1)
|
|
|
|
def test_ror_nocarry(self):
|
|
val = 0x00F0
|
|
result, carry = bitwise.ROR_C(val, 4, 32)
|
|
print hex(result)
|
|
self.assertEqual(result, 0xF)
|
|
self.assertEqual(carry, 0)
|
|
|
|
def test_ror_carry(self):
|
|
val = 0x0003
|
|
result, carry = bitwise.ROR_C(val, 1, 32)
|
|
print hex(result)
|
|
self.assertEqual(result, 0x80000001)
|
|
self.assertEqual(carry, 1)
|
|
|
|
def test_rrx_nocarry(self):
|
|
val = 0x000F
|
|
result, carry = bitwise.RRX_C(val, 0, 32)
|
|
self.assertEqual(result, 0x7)
|
|
self.assertEqual(carry, 1)
|
|
|
|
def test_rrx_carry(self):
|
|
val = 0x0001
|
|
result, carry = bitwise.RRX_C(val, 1, 32)
|
|
print hex(result)
|
|
self.assertEqual(result, 0x80000000)
|
|
self.assertEqual(carry, 1)
|
|
|
|
def test_sint(self):
|
|
val = 0xFFFFFFFF
|
|
result = bitwise.SInt(val, 32)
|
|
self.assertEqual(result, -1)
|
|
|
|
def test_sint_2(self):
|
|
val = 0xFFFFFFFE
|
|
result = bitwise.SInt(val, 32)
|
|
self.assertEqual(result, -2)
|