|Version 1 (modified by cotto, 3 years ago)|
This page exists to hash out how Lorito can effectively use CPS. The starting point is a pseudocode Lorito version of the Fibonacci function. The ending point is a working executable version.
# fib(arg) get int arg from context # if arg < 2 compare int arg to 2 (geq, arg, 2, NO_EARLY_RETURN_LABEL) # return arg store int arg in context load return PC from context goto return PC NO_EARLY_RETURN_LABEL: # first = fib(arg - 1) create calling context subtract one from arg into arg1 (subtract arg, 1, arg1) store arg1 as first int register goto PC of fib get int arg (return value) from context as arg1 # second = fib(arg - 2) create calling context subtract two from arg into arg2 (subtract arg, 2, arg2) store arg2 as first int register goto PC of fib get int arg (return value) from context as arg2 # return first + second add arg1 and arg2 into arg3 (add arg1, arg2, arg3) store arg3 in calling context as int return goto PC of calling context