forked from defunkt/ReefVM
34 lines
355 B
Plaintext
34 lines
355 B
Plaintext
; Variadic function that sums all arguments
|
|
MAKE_FUNCTION (x ...rest) #19
|
|
PUSH 5
|
|
PUSH 10
|
|
PUSH 15
|
|
PUSH 20
|
|
PUSH 4
|
|
PUSH 0
|
|
CALL
|
|
HALT
|
|
; Function body: sum x and all rest elements
|
|
LOAD x
|
|
STORE sum
|
|
PUSH 0
|
|
STORE i
|
|
LOAD i
|
|
LOAD rest
|
|
ARRAY_LEN
|
|
LT
|
|
JUMP_IF_FALSE #8
|
|
LOAD sum
|
|
LOAD rest
|
|
LOAD i
|
|
ARRAY_GET
|
|
ADD
|
|
STORE sum
|
|
LOAD i
|
|
PUSH 1
|
|
ADD
|
|
STORE i
|
|
JUMP #-18
|
|
LOAD sum
|
|
RETURN
|