summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lem_interp/interp_inter_imp.lem14
-rw-r--r--src/lem_interp/run_interp_model.ml2
-rw-r--r--src/test/run_power.ml9
3 files changed, 15 insertions, 10 deletions
diff --git a/src/lem_interp/interp_inter_imp.lem b/src/lem_interp/interp_inter_imp.lem
index b59b4144..4dea7217 100644
--- a/src/lem_interp/interp_inter_imp.lem
+++ b/src/lem_interp/interp_inter_imp.lem
@@ -20,17 +20,21 @@ let to_bits l = (List.map (fun b -> match b with
let from_bits l = (List.map (fun b -> match b with
| Interp.V_lit (L_aux L_zero _) -> false
| _ -> true end) l)
-let rec to_bytes l = match (List.reverse l) with
+let rec to_bytes l = match l with
| [] -> []
| (a::b::c::d::e::f::g::h::rest) ->
- (natFromInteger(integerFromBoolList (false,[a;b;c;d;e;f;g;h])))::(to_bytes rest)
+ (natFromInteger(integerFromBoolList (false,(List.reverse([a;b;c;d;e;f;g;h])))))::(to_bytes rest)
end
let intern_value v = match v with
| Bitvector bs inc fst -> Interp.V_vector fst inc (to_bits bs)
| Bytevector bys -> Interp.V_vector 0 true
- (to_bits (List.reverse
- (List.concat (List.map (fun n -> boolListFrombitSeq 8 (bitSeqFromInteger (Just 8) (integerFromNat n))) bys))))
+ (List.concat (List.map (fun by ->
+ match Interp_lib.to_vec_inc (Interp.V_tuple([Interp.V_lit(L_aux (L_num 8) Interp_ast.Unknown);
+ Interp.V_lit(L_aux (L_num (integerFromNat by)) Interp_ast.Unknown)]))
+ with
+ | Interp.V_vector _ _ bits -> bits
+ | _ -> [] end) bys))
| Unknown -> Interp.V_unknown
| _ -> Interp.V_unknown
end
@@ -50,7 +54,7 @@ let rec extern_value mode for_mem v = match v with
else Nothing)
| Interp.V_vector fst inc bits ->
if for_mem
- then (Bytevector (List.reverse (to_bytes (from_bits bits))), Nothing)
+ then (Bytevector (to_bytes (from_bits bits)), Nothing)
else (Bitvector (from_bits bits) inc fst, Nothing)
| Interp.V_lit (L_aux L_zero _) ->
if for_mem
diff --git a/src/lem_interp/run_interp_model.ml b/src/lem_interp/run_interp_model.ml
index a90dffc2..28d0d862 100644
--- a/src/lem_interp/run_interp_model.ml
+++ b/src/lem_interp/run_interp_model.ml
@@ -143,7 +143,7 @@ let rec perform_action ((reg, mem) as env) = function
if eq_big_int length zero_big_int
then []
else (Mem.find location mem)::(reading (increment location) (sub_big_int length unit_big_int)) in
- (Some (Bytevector((List.rev (reading location length)))), env)
+ (Some (Bytevector(reading location length)), env)
| Write_mem0(_,(Bytevector location), length, _, (Bytevector bytes),_,_) ->
let rec writing location length bytes mem =
if eq_big_int length zero_big_int
diff --git a/src/test/run_power.ml b/src/test/run_power.ml
index 335dde47..83f6549c 100644
--- a/src/test/run_power.ml
+++ b/src/test/run_power.ml
@@ -39,11 +39,12 @@ let reg = ref (Reg.add "dummy" Unknown0 Reg.empty) ;;
let add_mem byte addr =
assert(byte >= 0 && byte < 256);
- Printf.printf "adder is %s, byte is %s\n" (string_of_big_int addr) (string_of_int byte);
+ (*Printf.printf "adder is %s, byte is %s\n" (string_of_big_int addr) (string_of_int byte);*)
let addr = big_int_to_vec true addr (big_int_of_int 64) in
- Printf.printf "adder is %s byte is %s\n" (Printing_functions.val_to_string addr) (string_of_int byte);
+ (*Printf.printf "adder is %s byte is %s\n" (Printing_functions.val_to_string addr) (string_of_int byte);*)
match addr with
- | Bytevector addr -> mem := Mem.add addr byte !mem
+ | Bytevector addr -> (*List.iter (fun i -> Printf.printf "%i " i) addr; Printf.printf "\n";*)
+ mem := Mem.add addr byte !mem
;;
let add_section s =
@@ -297,7 +298,7 @@ let run () =
mainaddr := "0x" ^ (List.fold_left (^) "" (List.map (Printf.sprintf "%02x") addr));
end in
Printf.printf "start address: %s\n" !mainaddr;
- Printf.printf "%s\n" (Printing_functions.val_to_string (Bytevector !startaddr));
+(* Printf.printf "%s\n" (Printing_functions.val_to_string (Bytevector !startaddr));*)
let my_reg = init_reg () in
reg := my_reg;
(* entry point: unit -> unit fde *)