43 - tests for 'deref' and 'copy'

This commit is contained in:
Kartik K. Agaram 2014-07-31 02:18:00 -07:00
parent fa234f9a86
commit 52c3822e08
2 changed files with 25 additions and 4 deletions

View File

@ -295,6 +295,27 @@
(if (~iso memory* (obj 1 2 2 4 3 nil 4 3))
(prn "F - 'jif' can take a negative offset to make backward jumps"))
(clear)
(add-fns
'((main
((1 integer) <- literal 34)
((2 integer) <- copy (1 integer)))))
(run function*!main)
;? (prn memory*)
(if (~iso memory* (obj 1 34 2 34))
(prn "F - 'copy' performs direct addressing"))
(clear)
(add-fns
'((main
((1 integer-address) <- literal 2)
((2 integer) <- literal 34)
((3 integer) <- deref (1 integer-address)))))
(run function*!main)
;? (prn memory*)
(if (~iso memory* (obj 1 2 2 34 3 34))
(prn "F - 'deref' performs indirect addressing"))
(clear)
(add-fns
'((test1

8
new.mu
View File

@ -1,14 +1,14 @@
; memory map: 1-1000 reserved for the (currently non-reentrant) allocator
(main
((1 integer) <- literal 1000) ; location 1 contains the high-water mark for the memory allocator
((4 integer-pointer) <- new)
((5 integer) <- deref (4 integer-pointer))
((4 integer-address) <- new)
((5 integer) <- deref (4 integer-address))
)
(new
((2 integer-pointer) <- copy (1 integer))
((2 integer-address) <- copy (1 integer))
((3 integer) <- literal 1)
((1 integer) <- add (1 integer) (3 integer))
(reply (2 integer-pointer)))
(reply (2 integer-address)))
;; vim:ft=scheme