diff options
Diffstat (limited to 'examples/customization/bin-utils/binutils.py')
-rw-r--r-- | examples/customization/bin-utils/binutils.py | 125 |
1 files changed, 0 insertions, 125 deletions
diff --git a/examples/customization/bin-utils/binutils.py b/examples/customization/bin-utils/binutils.py deleted file mode 100644 index 576dcba02f78..000000000000 --- a/examples/customization/bin-utils/binutils.py +++ /dev/null @@ -1,125 +0,0 @@ -"Collection of tools for displaying bit representation of numbers.""" - -import StringIO - - -def binary(n, width=None): - """ - Return a list of (0|1)'s for the binary representation of n where n >= 0. - If you specify a width, it must be > 0, otherwise it is ignored. The list - could be padded with 0 bits if width is specified. - """ - l = [] - if width and width <= 0: - width = None - while n > 0: - l.append(1 if n & 1 else 0) - n = n >> 1 - - if width: - for i in range(width - len(l)): - l.append(0) - - 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) - if n >= 0: - if n > (val - 1): - return None - # It is safe to represent n with width-bits. - return binary(n, width) - - if n < 0: - if abs(n) > val: - return None - # It is safe to represent n (a negative int) with width-bits. - 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] -# print binary(0x1F, 8) -# [0, 0, 0, 1, 1, 1, 1, 1] -# print twos_complement(-5, 4) -# [1, 0, 1, 1] -# print twos_complement(7, 4) -# [0, 1, 1, 1] -# print binary(7) -# [1, 1, 1] -# 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. - args[0] (mandatory) is the unsigned integer to be converted - args[1] (optional) is the bit width of the binary representation - args[2] (optional) if specified, turns on verbose printing""" - args = command_line.split() - try: - n = int(args[0], 0) - width = None - if len(args) > 1: - width = int(args[1], 0) - if width < 0: - width = 0 - except: - print utob.__doc__ - return - - if len(args) > 2: - verbose = True - else: - verbose = False - - bits = binary(n, width) - if not bits: - print "insufficient width value: %d" % width - return - if verbose and width > 0: - pos = positions(width) - 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 - args[1] (mandatory) is the bit width of the two's complement representation - args[2] (optional) if specified, turns on verbose printing""" - args = command_line.split() - try: - n = int(args[0], 0) - width = int(args[1], 0) - if width < 0: - width = 0 - except: - print itob.__doc__ - return - - if len(args) > 2: - verbose = True - else: - verbose = False - - bits = twos_complement(n, width) - if not bits: - print "insufficient width value: %d" % width - return - if verbose and width > 0: - pos = positions(width) - print ' ' + ' '.join(pos) - print ' %s' % str(bits) |