summaryrefslogtreecommitdiff
path: root/src
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
parent44e619d7e80e4f148febf21ebe5115dfdd56cf0f (diff)
Fix endianess issues
Diffstat (limited to 'src')
-rw-r--r--src/lem_interp/interp.lem6
-rw-r--r--src/lem_interp/run_interp.ml4
-rw-r--r--src/test/power.sail2
3 files changed, 8 insertions, 4 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 ->
diff --git a/src/test/power.sail b/src/test/power.sail
index 571da4cd..f0b56e11 100644
--- a/src/test/power.sail
+++ b/src/test/power.sail
@@ -194,6 +194,6 @@ function unit main _ = {
NIA := 0b0;
(* should decode as Branch *)
- execute(decode(0b01001000000000000000000000000000));
+ execute(decode(0b00000000000000000000000000010010));
()
}