summaryrefslogtreecommitdiffstats
path: root/scripts/cxxdemo/hex8tohex32.py
blob: ae44101ad812ef195e2d0ade8e4027d2c8a3e357 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/env python3

import fileinput
import itertools

ptr = 0
data = []

def write_data():
    if len(data) != 0:
        print("@%08x" % (ptr >> 2))
        while len(data) % 4 != 0:
            data.append(0)
        for word_bytes in zip(*([iter(data)]*4)):
            print("".join(["%02x" % b for b in reversed(word_bytes)]))

for line in fileinput.input():
    if line.startswith("@"):
        addr = int(line[1:], 16)
        if addr > ptr+4:
            write_data()
            ptr = addr
            data = []
            while ptr % 4 != 0:
                data.append(0)
                ptr -= 1
        else:
            while ptr + len(data) < addr:
                data.append(0)
    else:
        data += [int(tok, 16) for tok in line.split()]

write_data()