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.lem16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/lem_interp/interp_interface.lem b/src/lem_interp/interp_interface.lem
index 374f633e..396f0f5c 100644
--- a/src/lem_interp/interp_interface.lem
+++ b/src/lem_interp/interp_interface.lem
@@ -30,11 +30,16 @@ end
type word8 = nat (* bounded at a byte, for when lem supports it*)
+type end_flag =
+ | E_big_endian
+ | E_little_endian
+
type interpreter_state = Interp.stack (*Deem abstract*)
(* Will come from a .lem file generated by Sail, bound to a 'defs' identifier *)
type specification = Interp_ast.defs Interp.tannot (*Deem abstract*)
-type interp_mode = Interp.interp_mode (*Deem abstract*)
-val make_mode : bool -> bool -> interp_mode
+type interpreter_mode = Interp.interp_mode (*Deem abstract*)
+type interp_mode = <| internal_mode: interpreter_mode; endian: end_flag |>
+val make_mode : (*eager*) bool -> (*tracking*) bool -> end_flag -> interp_mode
val tracking_dependencies : interp_mode -> bool
(** basic values *)
@@ -53,10 +58,6 @@ type direction =
| D_increasing
| D_decreasing
-type end_flag =
- | E_big_endian
- | E_little_endian
-
type register_value = <|
rv_bits: list bit_lifted (* MSB first, smallest index number *);
rv_dir: direction;
@@ -73,8 +74,9 @@ type instruction_field_value = list bit
type byte = Byte of list bit (* of length 8 *) (*MSB first everywhere*)
type address_lifted = Address_lifted of list byte_lifted (* of length 8 for 64bit machines*) * maybe integer
+(* for both values of end_flag, MSBy first *)
-type memory_byte = byte_lifted
+type memory_byte = byte_lifted (* of length 8 *) (*MSB first everywhere*)
type memory_value = list memory_byte
(* the list is of length >=1 *)