summaryrefslogtreecommitdiff
path: root/src/lem_interp
diff options
context:
space:
mode:
authorGabriel Kerneis2014-02-12 17:02:02 +0000
committerGabriel Kerneis2014-02-12 17:02:02 +0000
commitcdcd5880a27ff16fdafb82bdaab57ab361e1f546 (patch)
tree9e9ff60c776b83d89457afc6f317681fb4adae79 /src/lem_interp
parent44e619d7e80e4f148febf21ebe5115dfdd56cf0f (diff)
Fix endianess issues
Diffstat (limited to 'src/lem_interp')
-rw-r--r--src/lem_interp/interp.lem6
-rw-r--r--src/lem_interp/run_interp.ml4
2 files changed, 7 insertions, 3 deletions
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 ->