summaryrefslogtreecommitdiff
path: root/src/lem_interp/interp_interface.lem
diff options
context:
space:
mode:
authorKathy Gray2015-11-10 10:56:05 +0000
committerKathy Gray2015-11-10 10:56:15 +0000
commit09999eab60f50dde712deac828e92ef699f06964 (patch)
tree9c6b19965a30b8c43d3f82d20e4e0196d56c679f /src/lem_interp/interp_interface.lem
parent34fa318e6be2246acb1d8e8286cfa014eca8eb9e (diff)
Make first half of sequential interpreter driver compile again
Diffstat (limited to 'src/lem_interp/interp_interface.lem')
-rw-r--r--src/lem_interp/interp_interface.lem14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/lem_interp/interp_interface.lem b/src/lem_interp/interp_interface.lem
index 85ea4cfe..ae64f96c 100644
--- a/src/lem_interp/interp_interface.lem
+++ b/src/lem_interp/interp_interface.lem
@@ -1176,7 +1176,19 @@ let register_value_of_address (Address bytes _) dir : register_value =
rv_start_internal = if dir = D_increasing then 0 else (List.length bits) - 1
|>
-
+val register_value_of_memory_value : memory_value -> direction -> register_value
+let register_value_of_memory_value bytes dir : register_value =
+ let bitls = List.concatMap (fun (Byte_lifted bs) -> bs) bytes in
+ <| rv_bits = bitls;
+ rv_dir = dir;
+ rv_start = 0;
+ rv_start_internal = if dir = D_increasing then 0 else (List.length bitls) - 1
+ |>
+
+val memory_value_of_register_value: register_value -> memory_value
+let memory_value_of_register_value r =
+ (byte_lifteds_of_bit_lifteds r.rv_bits)
+
val address_lifted_of_register_value : register_value -> maybe address_lifted
(* returning Nothing iff the register value is not 64 bits wide, but
allowing Bitl_undef and Bitl_unknown *)