Esempio n. 1
0
 def test_from_twos_complement(self):
     self.assertEqual(
         -1, bit_helpers.from_twos_complement(value=0xf, bit_count=4))
     self.assertEqual(
         -1, bit_helpers.from_twos_complement(value=0x1f, bit_count=5))
     self.assertEqual(
         -2, bit_helpers.from_twos_complement(value=0x1e, bit_count=5))
     self.assertEqual(
         15, bit_helpers.from_twos_complement(value=0xf, bit_count=5))
Esempio n. 2
0
def bits_to_int(jit_bits: ir_bits.Bits, signed: bool) -> int:
    """Constructs the ir bits value by reading in a 64-bit value at a time."""
    assert isinstance(jit_bits, ir_bits.Bits), jit_bits
    bit_count = jit_bits.bit_count()
    bits_value = jit_bits.to_uint()

    return (bits_value if not signed else bit_helpers.from_twos_complement(
        bits_value, bit_count))
Esempio n. 3
0
def bits_to_int(jit_bits: ir_bits.Bits, signed: bool) -> int:
    """Constructs the ir bits value by reading in a 64-bit value at a time."""
    bit_count = jit_bits.bit_count()
    bits_value = 0
    word_number = 0
    while (word_number * 64) < bit_count:
        word_value = jit_bits.word_to_uint(word_number)
        bits_value = (word_value << (word_number * WORD_SIZE)) | bits_value
        word_number += 1

    return (bits_value if not signed else bit_helpers.from_twos_complement(
        bits_value, bit_count))
Esempio n. 4
0
 def from_twos_complement(self) -> int:
   return bit_helpers.from_twos_complement(
       value=self.value, bit_count=self.bit_count)