示例#1
0
 def get_enumeration(self, tr_type):
     """Lookup enumerations for translator type. Returns dictionary indexed
     by integer values, eg. {0x0: 'UNDEFINDED'}.
     """
     if tr_type in self.enumerations.keys():
         # Cast values to integer and return dictionary.
         return dict([
             (binutils.integer(value), key)
             for key, value in self.enumerations.get(tr_type).items()
         ])
     return {}
示例#2
0
 def translate(self, node, values):
     """Translate by *node* type. Define methods named tr_<type> to extend
     type translations. Attribute *values* is a list of values to be passed
     to the translatior method.
     """
     if isinstance(values, int):
         values = [
             values,
         ]
     values = [binutils.integer(value) for value in values]
     params = node.getParameters()
     tr_type = params.setdefault(self.type_key, self.tr_type_default)
     # Enumerations.
     enums = self.get_enumeration(tr_type)
     if values[0] in enums.keys():
         return enums[values[0]]
     # Use method to convert values.
     return (self.get_translator(tr_type)
             or self.get_translator(self.tr_type_default))(node, values)
示例#3
0
 def hexstr(self, value):
     """Returns hex formatted string of attribute *value* with leading zeros
     according to data width."""
     return '{0:0{1}x}'.format(
         binutils.integer(value) & self.bitmask, self.charcount)
示例#4
0
 def binstr(self, value):
     """Returns binary formatted string of attribute *value* with leading
     zeros according to data width."""
     return '{0:0{1}b}'.format(
         binutils.integer(value) & self.bitmask, self.width)