diff options
| author | Peter Sewell | 2014-11-23 13:15:05 +0000 |
|---|---|---|
| committer | Peter Sewell | 2014-11-23 13:15:05 +0000 |
| commit | 344003fe4c5eb283e1ac8e09e6f9c8d478dc89dc (patch) | |
| tree | f76bce538a0b6ac253af91c359b4a6a5a18a8902 /src/lem_interp/interp_interface.lem | |
| parent | 3de2cba4d5706c741a5f445cb2e33608d1043248 (diff) | |
wib
Diffstat (limited to 'src/lem_interp/interp_interface.lem')
| -rw-r--r-- | src/lem_interp/interp_interface.lem | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/lem_interp/interp_interface.lem b/src/lem_interp/interp_interface.lem index 26f5f508..02e7d2e2 100644 --- a/src/lem_interp/interp_interface.lem +++ b/src/lem_interp/interp_interface.lem @@ -166,6 +166,8 @@ instance (Ord reg_name) let (>=) r1 r2 = (reg_nameCompare r1 r2) <> LT end +(** basic values *) + type bit = | Bitc_zero | Bitc_one @@ -184,7 +186,7 @@ type register_value = <| rv_bits: list bit_lifted; rv_dir: direction; rv_start: type byte_lifted = Byte_lifted of list bit_lifted (* of length 8 *) -type instruction_field_value = list bit +type instruction_field_value = (*SHOULD BE JUST*) list bit (*register_value *) type byte = Byte of list bit (* of length 8 *) @@ -200,6 +202,8 @@ type address = Address of list byte (* of length 8 *) type opcode = Opcode of list byte (* of length 4 *) +(** typeclass instantiations *) + instance (Ord register_value) let compare = defaultCompare let (<) = defaultLess @@ -583,6 +587,14 @@ let address_of_register_value (rv:register_value) : maybe address = end end +let address_of_memory_value (mv:memory_value) : maybe address = + match byte_list_of_memory_value mv with + | Nothing -> Nothing + | Just bs -> + if List.length bs <> 8 then Nothing else + Just (address_of_byte_list bs) + end + val byte_of_int : int -> byte let byte_of_int (i:int) : byte = failwith "TODO" |
