summaryrefslogtreecommitdiff
path: root/src/lem_interp/interp_interface.lem
diff options
context:
space:
mode:
Diffstat (limited to 'src/lem_interp/interp_interface.lem')
-rw-r--r--src/lem_interp/interp_interface.lem10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/lem_interp/interp_interface.lem b/src/lem_interp/interp_interface.lem
index d333873b..e5489bd5 100644
--- a/src/lem_interp/interp_interface.lem
+++ b/src/lem_interp/interp_interface.lem
@@ -1137,7 +1137,7 @@ let clear_low_order_bits_of_address a =
end
end
-val translate_address : string -> address -> maybe address * maybe nat
+val translate_address : context -> end_flag -> string -> address -> maybe address * maybe nat
val byte_list_of_memory_value : end_flag -> memory_value -> maybe (list byte)
let byte_list_of_memory_value endian mv =
@@ -1219,7 +1219,7 @@ let address_of_address_lifted (al:address_lifted): maybe address =
| Just bs -> Just (Address bs i)
end
| _ -> Nothing
- end
+end
val address_of_register_value : register_value -> maybe address
(* returning Nothing iff the register value is not 64 bits wide, or contains Bitl_undef or Bitl_unknown *)
@@ -1270,6 +1270,12 @@ let byte_list_of_address (a:address) : list byte =
| Address bs _ -> bs
end
+val memory_value_of_address : end_flag -> address -> memory_value
+let memory_value_of_address endian addr =
+ match addr with
+ | Address bs _ -> List.map byte_lifted_of_byte (if endian = E_big_endian then bs else List.reverse bs)
+ end
+
val byte_list_of_opcode : opcode -> list byte
let byte_list_of_opcode (opc:opcode) : list byte =
match opc with