4 - output args now optional
This commit is contained in:
parent
8fafaf8982
commit
52cbb73992
29
mu.arc
29
mu.arc
|
@ -12,19 +12,22 @@
|
|||
(each instr instrs
|
||||
(unless returned
|
||||
;? (prn instr)
|
||||
(let (oarg1 <- op arg1 arg2) instr
|
||||
;? (prn op)
|
||||
(case op
|
||||
loadi
|
||||
(= memory*.oarg1 arg1)
|
||||
add
|
||||
(= memory*.oarg1
|
||||
(+ memory*.arg1 memory*.arg2))
|
||||
return
|
||||
(set returned)
|
||||
; else user-defined function
|
||||
(run function*.op)
|
||||
))))
|
||||
(let delim (or (pos '<- instr) -1)
|
||||
(with (oarg (cut instr 0 delim)
|
||||
op (instr (+ delim 1))
|
||||
arg (cut instr (+ delim 2)))
|
||||
;? (prn op)
|
||||
(case op
|
||||
loadi
|
||||
(= (memory* oarg.0) arg.0)
|
||||
add
|
||||
(= (memory* oarg.0)
|
||||
(+ (memory* arg.0) (memory* arg.1)))
|
||||
return
|
||||
(set returned)
|
||||
; else user-defined function
|
||||
(run function*.op)
|
||||
)))))
|
||||
;? (prn "return")
|
||||
)
|
||||
|
||||
|
|
6
mu.arc.t
6
mu.arc.t
|
@ -16,7 +16,7 @@
|
|||
(main
|
||||
(1 <- loadi 1)
|
||||
(2 <- loadi 3)
|
||||
(_ <- add-fn))))
|
||||
(add-fn))))
|
||||
(run function*!main)
|
||||
;? (prn memory*)
|
||||
(if (~iso memory* (obj 1 1 2 3 3 4))
|
||||
|
@ -26,12 +26,12 @@
|
|||
(add-fns
|
||||
'((add-fn
|
||||
(3 <- add 1 2)
|
||||
(_ <- return)
|
||||
(return)
|
||||
(4 <- loadi 34))
|
||||
(main
|
||||
(1 <- loadi 1)
|
||||
(2 <- loadi 3)
|
||||
(_ <- add-fn))))
|
||||
(add-fn))))
|
||||
(run function*!main)
|
||||
;? (prn memory*)
|
||||
(if (~iso memory* (obj 1 1 2 3 3 4))
|
||||
|
|
Loading…
Reference in New Issue