diff options
| author | Gabriel Kerneis | 2014-02-12 17:02:02 +0000 |
|---|---|---|
| committer | Gabriel Kerneis | 2014-02-12 17:02:02 +0000 |
| commit | cdcd5880a27ff16fdafb82bdaab57ab361e1f546 (patch) | |
| tree | 9e9ff60c776b83d89457afc6f317681fb4adae79 /src | |
| parent | 44e619d7e80e4f148febf21ebe5115dfdd56cf0f (diff) | |
Fix endianess issues
Diffstat (limited to 'src')
| -rw-r--r-- | src/lem_interp/interp.lem | 6 | ||||
| -rw-r--r-- | src/lem_interp/run_interp.ml | 4 | ||||
| -rw-r--r-- | src/test/power.sail | 2 |
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)); () } |
