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

Public Member Functions

def __init__
 
def __getitem__
 
def __repr__
 
def gen
 
def check_fbits
 
def flen
 

Public Attributes

 strbits
 
 l
 
 cls
 
 fname
 
 order
 
 lmask
 
 fbits
 
 fmask
 
 flen
 
 value
 
 kargs
 

Static Public Attributes

dictionary all_new_c = {}
 
 prio = default_prio
 

Detailed Description

Definition at line 353 of file cpu.py.

Constructor & Destructor Documentation

def miasm2.core.cpu.bs.__init__ (   self,
  strbits = None,
  l = None,
  cls = None,
  fname = None,
  order = 0,
  flen = None,
  kargs 
)

Definition at line 358 of file cpu.py.

359  fname=None, order=0, flen=None, **kargs):
360  if fname is None:
361  fname = hex(id(str((strbits, l, cls, fname, order, flen, kargs))))
362  if strbits is None:
363  strbits = "" # "X"*l
364  elif l is None:
365  l = len(strbits)
366  if strbits and isbin(strbits):
367  value = int(strbits, 2)
368  elif 'default_val' in kargs:
369  value = int(kargs['default_val'], 2)
370  else:
371  value = None
372  allbits = list(strbits)
373  allbits.reverse()
374  fbits = 0
375  fmask = 0
376  while allbits:
377  a = allbits.pop()
378  if a == " ":
379  continue
380  fbits <<= 1
381  fmask <<= 1
382  if a in '01':
383  a = int(a)
384  fbits |= a
385  fmask |= 1
386  lmask = (1 << l) - 1
387  # gen conditional field
388  if cls:
389  for b in cls:
390  if 'flen' in b.__dict__:
391  flen = getattr(b, 'flen')
393  self.strbits = strbits
394  self.l = l
395  self.cls = cls
396  self.fname = fname
397  self.order = order
398  self.lmask = lmask
399  self.fbits = fbits
400  self.fmask = fmask
401  self.flen = flen
402  self.value = value
403  self.kargs = kargs
def isbin
Definition: cpu.py:336

+ Here is the call graph for this function:

Member Function Documentation

def miasm2.core.cpu.bs.__getitem__ (   self,
  item 
)

Definition at line 404 of file cpu.py.

405  def __getitem__(self, item):
406  return getattr(self, item)
def __getitem__
Definition: cpu.py:404
def miasm2.core.cpu.bs.__repr__ (   self)

Definition at line 407 of file cpu.py.

408  def __repr__(self):
409  o = self.__class__.__name__
410  if self.fname:
411  o += "_%s" % self.fname
412  o += "_%(strbits)s" % self
413  if self.cls:
414  o += '_' + '_'.join([x.__name__ for x in self.cls])
415  return o
def miasm2.core.cpu.bs.check_fbits (   self,
  v 
)

Definition at line 438 of file cpu.py.

439  def check_fbits(self, v):
440  return v & self.fmask == self.fbits
def check_fbits
Definition: cpu.py:438
def miasm2.core.cpu.bs.flen (   cls,
  v 
)

Definition at line 442 of file cpu.py.

443  def flen(cls, v):
444  raise NotImplementedError('not fully functional')
445 
def miasm2.core.cpu.bs.gen (   self,
  parent 
)

Definition at line 416 of file cpu.py.

417  def gen(self, parent):
418  c_name = 'nbsi'
419  if self.cls:
420  c_name += '_' + '_'.join([x.__name__ for x in self.cls])
421  bases = list(self.cls)
422  else:
423  bases = []
424  # bsi added at end of list
425  # used to use first function of added class
426  bases += [bsi]
427  k = c_name, tuple(bases)
428  if k in self.all_new_c:
429  new_c = self.all_new_c[k]
430  else:
431  new_c = type(c_name, tuple(bases), {})
432  self.all_new_c[k] = new_c
433  c = new_c(parent,
434  self.strbits, self.l, self.cls,
435  self.fname, self.order, self.lmask, self.fbits,
436  self.fmask, self.value, self.flen, **self.kargs)
437  return c
dictionary all_new_c
Definition: cpu.py:354

Member Data Documentation

dictionary miasm2.core.cpu.bs.all_new_c = {}
static

Definition at line 354 of file cpu.py.

miasm2.core.cpu.bs.cls

Definition at line 394 of file cpu.py.

miasm2.core.cpu.bs.fbits

Definition at line 398 of file cpu.py.

miasm2.core.cpu.bs.flen

Definition at line 400 of file cpu.py.

miasm2.core.cpu.bs.fmask

Definition at line 399 of file cpu.py.

miasm2.core.cpu.bs.fname

Definition at line 395 of file cpu.py.

miasm2.core.cpu.bs.kargs

Definition at line 402 of file cpu.py.

miasm2.core.cpu.bs.l

Definition at line 393 of file cpu.py.

miasm2.core.cpu.bs.lmask

Definition at line 397 of file cpu.py.

miasm2.core.cpu.bs.order

Definition at line 396 of file cpu.py.

miasm2.core.cpu.bs.prio = default_prio
static

Definition at line 355 of file cpu.py.

miasm2.core.cpu.bs.strbits

Definition at line 392 of file cpu.py.

miasm2.core.cpu.bs.value

Definition at line 401 of file cpu.py.


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