diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/c/pointer_assign.expect | 3 | ||||
| -rw-r--r-- | test/c/pointer_assign.sail | 27 |
2 files changed, 30 insertions, 0 deletions
diff --git a/test/c/pointer_assign.expect b/test/c/pointer_assign.expect new file mode 100644 index 00000000..6a0eaa4d --- /dev/null +++ b/test/c/pointer_assign.expect @@ -0,0 +1,3 @@ +A = 0x00000000 +A = 0x00000002 +A = 0x00000004 diff --git a/test/c/pointer_assign.sail b/test/c/pointer_assign.sail new file mode 100644 index 00000000..e2e9e9ab --- /dev/null +++ b/test/c/pointer_assign.sail @@ -0,0 +1,27 @@ +default Order dec + +$include <vector_dec.sail> + +register A : bits(32) +register B : bits(32) + +let AB = [ref B, ref A] + +let STATUS_1 = 0x0000_0002 +let STATUS_2 = 0x0000_0004 + +val read_register = "reg_deref" : forall ('a : Type). register('a) -> 'a effect {rreg} + +val "or_bits" : forall 'n, 'n >= 0. (bits('n), bits('n)) -> bits('n) + +overload operator | = {or_bits} + +function main() : unit -> unit = { + let C = AB[0]; + let c = read_register(C); + print_bits("A = ", A); + (*C) = c | STATUS_1; + print_bits("A = ", A); + (*(ref A)) = c | STATUS_2; + print_bits("A = ", A); +}
\ No newline at end of file |
