From cdcd5880a27ff16fdafb82bdaab57ab361e1f546 Mon Sep 17 00:00:00 2001 From: Gabriel Kerneis Date: Wed, 12 Feb 2014 17:02:02 +0000 Subject: Fix endianess issues --- src/lem_interp/interp.lem | 6 +++++- src/lem_interp/run_interp.ml | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) (limited to 'src/lem_interp') diff --git a/src/lem_interp/interp.lem b/src/lem_interp/interp.lem index a9e87056..0d43f338 100644 --- a/src/lem_interp/interp.lem +++ b/src/lem_interp/interp.lem @@ -173,12 +173,16 @@ let litV_to_vec l = match l with | L_hex s -> let hexes = String.toCharList s in + (* XXX unimplemented *) V_vector 0 true [] | L_bin s -> let bits = String.toCharList s in let exploded_bits = List.map (fun c -> String.toString [c]) bits in let bits = List.map (fun s -> match s with | "0" -> (V_lit L_zero) | "1" -> (V_lit L_one) end) exploded_bits in - V_vector 0 true bits + (* 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) 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 beeefc7a..84ba37df 100644 --- a/src/lem_interp/run_interp.ml +++ b/src/lem_interp/run_interp.ml @@ -29,8 +29,8 @@ let rec val_to_string = function | V_list l -> let repr = String.concat "; " (List.map val_to_string l) in sprintf "list [%s]" repr - | V_vector (first_index, msb, l) -> - let order = if msb then "big-endian" else "little-endian" in + | V_vector (first_index, inc, l) -> + let order = if inc then "little-endian" else "big-endian" in let repr = String.concat "; " (List.map val_to_string l) in sprintf "vector [%s] (%s, from %s)" repr order (Big_int.string_of_big_int first_index) | V_record l -> -- cgit v1.2.3