Miasm2
 All Classes Namespaces Files Functions Variables Typedefs Properties Macros
Public Member Functions | Public Attributes | List of all members
miasm2.core.cpu.bitobj Class Reference
+ Collaboration diagram for miasm2.core.cpu.bitobj:

Public Member Functions

def __init__
 
def __len__
 
def getbits
 
def putbits
 
def tostring
 
def reset
 
def copy_state
 

Public Attributes

 bits
 
 offset
 

Detailed Description

Definition at line 24 of file cpu.py.

Constructor & Destructor Documentation

def miasm2.core.cpu.bitobj.__init__ (   self,
  s = "" 
)

Definition at line 26 of file cpu.py.

26 
27  def __init__(self, s=""):
28  if not s:
29  bits = []
30  else:
31  bits = list(bin(int(str(s).encode('hex'), 16))[2:])
32  bits = [int(x) for x in bits]
33  if len(bits) % 8:
34  bits = [0 for x in xrange(8 - (len(bits) % 8))] + bits
35  bits = ['0' for x in xrange(len(s) * 8 - len(bits))] + bits
36  self.bits = bits
37  self.offset = 0

Member Function Documentation

def miasm2.core.cpu.bitobj.__len__ (   self)

Definition at line 38 of file cpu.py.

38 
39  def __len__(self):
40  return len(self.bits) - self.offset
def miasm2.core.cpu.bitobj.copy_state (   self)

Definition at line 73 of file cpu.py.

73 
74  def copy_state(self):
75  b = self.__class__()
76  b.bits = self.bits
77  b.offset = self.offset
78  return b
79 
def miasm2.core.cpu.bitobj.getbits (   self,
  n 
)

Definition at line 41 of file cpu.py.

41 
42  def getbits(self, n):
43  if not n:
44  return 0
45  o = 0
46  if n > len(self.bits) - self.offset:
47  raise ValueError('not enought bits %r %r' % (n, len(self.bits)))
48  b = self.bits[self.offset:self.offset + n]
49  b = int("".join([str(x) for x in b]), 2)
50  self.offset += n
51  return b
def miasm2.core.cpu.bitobj.putbits (   self,
  b,
  n 
)

Definition at line 52 of file cpu.py.

52 
53  def putbits(self, b, n):
54  if not n:
55  return
56  bits = list(bin(b)[2:])
57  bits = [int(x) for x in bits]
58  bits = [0 for x in xrange(n - len(bits))] + bits
59  self.bits += bits
def miasm2.core.cpu.bitobj.reset (   self)

Definition at line 70 of file cpu.py.

70 
71  def reset(self):
72  self.offset = 0
def miasm2.core.cpu.bitobj.tostring (   self)

Definition at line 60 of file cpu.py.

60 
61  def tostring(self):
62  if len(self.bits) % 8:
63  raise ValueError(
64  'num bits must be 8 bit aligned: %d' % len(self.bits))
65  b = int("".join([str(x) for x in self.bits]), 2)
66  b = "%X" % b
67  b = '0' * (len(self.bits) / 4 - len(b)) + b
68  b = b.decode('hex')
69  return b

Member Data Documentation

miasm2.core.cpu.bitobj.bits

Definition at line 35 of file cpu.py.

miasm2.core.cpu.bitobj.offset

Definition at line 36 of file cpu.py.


The documentation for this class was generated from the following file: