aboutsummaryrefslogtreecommitdiffstats
path: root/pack.py
diff options
context:
space:
mode:
Diffstat (limited to 'pack.py')
-rwxr-xr-xpack.py24
1 files changed, 14 insertions, 10 deletions
diff --git a/pack.py b/pack.py
index cf531af..4a21ab5 100755
--- a/pack.py
+++ b/pack.py
@@ -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)