diff options
Diffstat (limited to 'pack.py')
| -rwxr-xr-x | pack.py | 24 |
1 files changed, 14 insertions, 10 deletions
@@ -41,8 +41,9 @@ b7 02 01 10 import subv import bits + def byteify(word): - """ split longer bitfield into bytes. + """split longer bitfield into bytes. >>> byteify(bits.Bitfield(0x12345678, 32)) [(120,), (86,), (52,), (18,)] @@ -57,10 +58,11 @@ def byteify(word): out = [] for i in range(0, word.size, 8): - byte = word[i+7:i] + byte = word[i + 7 : i] out.append((byte.val,)) return out + @subv.with_parsed_lines def pack(iter): out = [] @@ -70,9 +72,9 @@ def pack(iter): tmp = out[:] out.clear() return { - 'type': 'instr', - 'instr': tmp, - 'comment': None, + "type": "instr", + "instr": tmp, + "comment": None, } last_segment = None @@ -82,15 +84,15 @@ def pack(iter): if out: yield subv.format(flush_bytes()) - if line['type'] == 'instr': - for part in line['instr']: + if line["type"] == "instr": + for part in line["instr"]: buf = bits.from_part(part) & buf else: - yield line['raw'] + yield line["raw"] while buf.size >= 8: byte = buf[7:0] - buf = buf.slice_allowempty(slice(buf.size-1, 8)) + buf = buf.slice_allowempty(slice(buf.size - 1, 8)) out.append((byte.val,)) if len(out) == 4: @@ -100,7 +102,9 @@ def pack(iter): assert buf.size == 0, "segment '{}' end isn't byte-aligned".format(segment) -if __name__ == '__main__': + +if __name__ == "__main__": import sys + for line in pack(sys.stdin): print(line) |
