diff options
Diffstat (limited to 'lldb/examples/customization/bin-utils/binutils.py')
-rw-r--r-- | lldb/examples/customization/bin-utils/binutils.py | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/lldb/examples/customization/bin-utils/binutils.py b/lldb/examples/customization/bin-utils/binutils.py index 313a354ec3a..576dcba02f7 100644 --- a/lldb/examples/customization/bin-utils/binutils.py +++ b/lldb/examples/customization/bin-utils/binutils.py @@ -2,6 +2,7 @@ import StringIO + def binary(n, width=None): """ Return a list of (0|1)'s for the binary representation of n where n >= 0. @@ -12,7 +13,7 @@ def binary(n, width=None): if width and width <= 0: width = None while n > 0: - l.append(1 if n&1 else 0) + l.append(1 if n & 1 else 0) n = n >> 1 if width: @@ -22,14 +23,15 @@ def binary(n, width=None): l.reverse() return l + def twos_complement(n, width): """ Return a list of (0|1)'s for the binary representation of a width-bit two's complement numeral system of an integer n which may be negative. """ - val = 2**(width-1) + val = 2**(width - 1) if n >= 0: - if n > (val-1): + if n > (val - 1): return None # It is safe to represent n with width-bits. return binary(n, width) @@ -38,7 +40,7 @@ def twos_complement(n, width): if abs(n) > val: return None # It is safe to represent n (a negative int) with width-bits. - return binary(val*2 - abs(n)) + return binary(val * 2 - abs(n)) # print binary(0xABCD) # [1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1] @@ -53,12 +55,13 @@ def twos_complement(n, width): # print twos_complement(-5, 64) # [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1] + def positions(width): """Helper function returning a list describing the bit positions. Bit positions greater than 99 are truncated to 2 digits, for example, 100 -> 00 and 127 -> 27.""" return ['{0:2}'.format(i)[-2:] for i in reversed(range(width))] - + def utob(debugger, command_line, result, dict): """Convert the unsigned integer to print its binary representation. @@ -88,9 +91,10 @@ def utob(debugger, command_line, result, dict): return if verbose and width > 0: pos = positions(width) - print ' '+' '.join(pos) + print ' ' + ' '.join(pos) print ' %s' % str(bits) + def itob(debugger, command_line, result, dict): """Convert the integer to print its two's complement representation. args[0] (mandatory) is the integer to be converted @@ -117,6 +121,5 @@ def itob(debugger, command_line, result, dict): return if verbose and width > 0: pos = positions(width) - print ' '+' '.join(pos) + print ' ' + ' '.join(pos) print ' %s' % str(bits) - |