diff options
| author | Gabriel Kerneis | 2014-03-19 17:26:06 +0000 |
|---|---|---|
| committer | Gabriel Kerneis | 2014-03-19 17:26:28 +0000 |
| commit | 37998039c75a6521fb91a5664aa0a3dce8879155 (patch) | |
| tree | ad2c149bec061adc78a6416736f9d69eedc8fcd3 /src | |
| parent | ab0b98f783644242454a6e76715b03f43bfc94c6 (diff) | |
Fix endianness
This will never end…
Diffstat (limited to 'src')
| -rw-r--r-- | src/lem_interp/interp.lem | 7 | ||||
| -rw-r--r-- | src/lem_interp/run_interp.ml | 4 |
2 files changed, 5 insertions, 6 deletions
diff --git a/src/lem_interp/interp.lem b/src/lem_interp/interp.lem index 91e0ddc2..8a9ebfe5 100644 --- a/src/lem_interp/interp.lem +++ b/src/lem_interp/interp.lem @@ -215,10 +215,9 @@ let litV_to_vec (L_aux lit l) = let bits = String.toCharList s in let exploded_bits = bits in (*List.map (fun c -> String.toString [c]) bits in*) let bits = List.map (fun s -> match s with | #'0' -> (V_lit (L_aux L_zero l)) | #'1' -> (V_lit (L_aux L_one l)) end) exploded_bits in - (* XXX assume binary constants are written in big-endian, convert them to - * little-endian by default - we might need syntax to change both of those - * assumptions. *) - V_vector 0 true (List.reverse bits) + (* XXX assume binary constants are written in big-endian, + * we might need syntax to change this assumption. *) + V_vector 0 true bits end (* Like List_extra.nth with a natural instead of nat index - diff --git a/src/lem_interp/run_interp.ml b/src/lem_interp/run_interp.ml index 37ee7770..8ae6d1ee 100644 --- a/src/lem_interp/run_interp.ml +++ b/src/lem_interp/run_interp.ml @@ -30,7 +30,7 @@ let loc_to_string = function " to line " ^ (string_of_int tline) ^ " character " ^ (string_of_int tchar) ;; -let bitvec_to_string l = "0b" ^ (String.concat "" (List.rev_map (function +let bitvec_to_string l = "0b" ^ (String.concat "" (List.map (function | V_lit(L_aux(L_zero, _)) -> "0" | V_lit(L_aux(L_one, _)) -> "1" | _ -> assert false) l)) @@ -53,7 +53,7 @@ let rec val_to_string = function | V_vector (first_index, inc, l) -> let order = if inc then "big-endian" else "little-endian" in let repr = - try bitvec_to_string l + try bitvec_to_string (if inc then l else List.rev l) with Failure _ -> String.concat "; " (List.map val_to_string l) in sprintf "vector [%s] (%s, from %s)" repr order (string_of_big_int first_index) | V_record(_, l) -> |
