aboutsummaryrefslogtreecommitdiffstats
path: root/format.py
diff options
context:
space:
mode:
authors-ol <s+removethis@s-ol.nu>2021-05-23 09:41:11 +0000
committers-ol <s+removethis@s-ol.nu>2021-05-23 09:41:11 +0000
commit8cf8176db625c93f940c2527e5e3bfb6b2d652de (patch)
tree40ca0f2c79478f10128d42357290d6134ae6e4ba /format.py
parentrevert to code detection by segment (diff)
downloadsubv-8cf8176db625c93f940c2527e5e3bfb6b2d652de.tar.gz
subv-8cf8176db625c93f940c2527e5e3bfb6b2d652de.zip
support offsets on labels
Diffstat (limited to 'format.py')
-rwxr-xr-xformat.py11
1 files changed, 7 insertions, 4 deletions
diff --git a/format.py b/format.py
index 7798589..9e0ead0 100755
--- a/format.py
+++ b/format.py
@@ -84,8 +84,12 @@ def default_slice(val, hi, lo):
>>> default_slice(('label', 'imm12'), 12, 1)
('label[12:1]', 'imm12')
+ >>> default_slice(('label-4', 'imm12'), 12, 1)
+ ('label-4[12:1]', 'imm12')
>>> default_slice(('label[14:3]', 'imm12'), 12, 1)
('label[14:3]', 'imm12')
+ >>> default_slice(('label+4[14:3]', 'imm12'), 12, 1)
+ ('label+4[14:3]', 'imm12')
>>> default_slice(('label[14:3]', 'imm12', 'extra'), 12, 1)
('label[14:3]', 'imm12', 'extra')
>>> default_slice(('label[31:0]', 'imm12'), 11, 0)
@@ -97,13 +101,12 @@ def default_slice(val, hi, lo):
if 'hi' not in parsed:
parsed['hi'] = hi
parsed['lo'] = lo
-
- ref = '{label}[{hi}:{lo}]'.format(**parsed)
+ ref = subv.format_reference(parsed)
p_size = parsed['hi'] - parsed['lo'] + 1
- assert parsed['size'] == p_size, "expected {} bit slice, got {} ({} bit)".format(parsed['size'], ref, p_size)
+ assert parsed['size'] == p_size, "expected {} bit slice, got {} ({} bit)".format(parsed['size'], ref[0], p_size)
- return (ref, *val[1:])
+ return ref
def slice_bit_or_ref(val, hi, lo):
""" bit.slice but for bitfields and label references.