5 - first stab at allocator, just for ints
Still can't write to a pointer.
This commit is contained in:
parent
29c2f5a398
commit
5b7de7f6d6
5
mu.arc
5
mu.arc
|
@ -99,6 +99,11 @@
|
||||||
;? (prn "jumping to " arg.1.1)
|
;? (prn "jumping to " arg.1.1)
|
||||||
(= pc (+ pc arg.1.1)) ; relies on continue still incrementing (bug)
|
(= pc (+ pc arg.1.1)) ; relies on continue still incrementing (bug)
|
||||||
(continue))
|
(continue))
|
||||||
|
copy
|
||||||
|
(= (memory* oarg.0.1) (memory* arg.0.1))
|
||||||
|
deref
|
||||||
|
(= (memory* oarg.0.1)
|
||||||
|
(memory* (memory* arg.0.1)))
|
||||||
reply
|
reply
|
||||||
(do (= result arg)
|
(do (= result arg)
|
||||||
(break))
|
(break))
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
; memory map: 1-1000 reserved for the (currently non-reentrant) allocator
|
||||||
|
(main
|
||||||
|
((integer 1) <- literal 1000) ; location 1 contains the high-water mark for the memory allocator
|
||||||
|
((integer-pointer 4) <- new)
|
||||||
|
((integer 5) <- deref (integer-pointer 4))
|
||||||
|
)
|
||||||
|
|
||||||
|
(new
|
||||||
|
((integer-pointer 2) <- copy (integer 1))
|
||||||
|
((integer 3) <- literal 1)
|
||||||
|
((integer 1) <- add (integer 1) (integer 3))
|
||||||
|
(reply (integer-pointer 2)))
|
||||||
|
|
||||||
|
;; vim:ft=scheme
|
Loading…
Reference in New Issue