summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKathy Gray2016-09-14 12:30:25 +0100
committerKathy Gray2016-09-14 12:30:25 +0100
commit5cd145951c080b05dc9a515fe40bd687c92f0d5c (patch)
tree4d1f3277e9572882e6a73fb1d03a8d8a923c7bf0 /src
parent5080e1b1876532cfee48acfffed957fce0b4070c (diff)
Change reading and writing of tag memory to report the tag/look for the tag as the first byte of the byte list on tagged memory operations
Diffstat (limited to 'src')
-rw-r--r--src/lem_interp/run_interp_model.ml7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/lem_interp/run_interp_model.ml b/src/lem_interp/run_interp_model.ml
index 7b4a13de..aca33e96 100644
--- a/src/lem_interp/run_interp_model.ml
+++ b/src/lem_interp/run_interp_model.ml
@@ -129,7 +129,12 @@ let rec perform_action ((reg, mem, tagmem) as env) = function
let naddress = integer_of_address address in
(match kind with
| Read_tag ->
- (Some (register_value_of_memory_value [(Mem.find naddress tagmem)] !default_order), env)
+ let tag = Mem.find naddress tagmem in
+ let rec reading (n : num) length =
+ if length = 0
+ then []
+ else (Mem.find n mem)::(reading (add n big_num_unit) (length - 1)) in
+ (Some (register_value_of_memory_value (tag::(reading naddress length)) !default_order), env)
| _ ->
let rec reading (n : num) length =
if length = 0