summaryrefslogtreecommitdiff
path: root/src/lem_interp/interp_inter_imp.lem
diff options
context:
space:
mode:
Diffstat (limited to 'src/lem_interp/interp_inter_imp.lem')
-rw-r--r--src/lem_interp/interp_inter_imp.lem11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/lem_interp/interp_inter_imp.lem b/src/lem_interp/interp_inter_imp.lem
index 3a826f8e..914cc6a5 100644
--- a/src/lem_interp/interp_inter_imp.lem
+++ b/src/lem_interp/interp_inter_imp.lem
@@ -238,9 +238,14 @@ end
let rec slice_reg_value v start stop =
let inc = v.rv_dir = D_increasing in
- <| v with rv_bits = (Interp.from_n_to_n (if inc then (start - v.rv_start) else (v.rv_start - start))
- (if inc then (stop - v.rv_start) else (v.rv_start - stop)) v.rv_bits);
- rv_start = (if inc then start else ((stop - start) + 1)) |>
+ let r_internal_start = if inc then start else (stop - start) + 1 in
+ let r_start = if inc then r_internal_start else start in
+ <| v with rv_bits = (Interp.from_n_to_n
+ (if inc then (start - v.rv_start_internal) else (v.rv_start_internal - start))
+ (if inc then (stop - v.rv_start_internal) else (v.rv_start_internal - stop)) v.rv_bits);
+ rv_start = r_start;
+ rv_start_internal = r_internal_start
+ |>
let update_reg_value_slice reg_name v start stop v2 =
let v_internal = intern_reg_value v in