Changes between Initial Version and Version 1 of LoritoCPS

Show
Ignore:
Timestamp:
08/06/10 00:50:28 (4 years ago)
Author:
cotto
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • LoritoCPS

    v1 v1  
     1This 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. 
     2 
     3{{{ 
     4# fib(arg) 
     5    get int arg from context 
     6 
     7    # if arg < 2 
     8    compare int arg to 2 (geq, arg, 2, NO_EARLY_RETURN_LABEL) 
     9 
     10    #    return arg 
     11    store int arg in context 
     12    load return PC from context 
     13    goto return PC 
     14 
     15    NO_EARLY_RETURN_LABEL: 
     16    # first  = fib(arg - 1) 
     17    create calling context 
     18    subtract one from arg into arg1 (subtract arg, 1, arg1) 
     19    store arg1 as first int register 
     20    goto PC of fib 
     21    get int arg (return value) from context as arg1 
     22 
     23    # second = fib(arg - 2) 
     24    create calling context 
     25    subtract two from arg into arg2 (subtract arg, 2, arg2) 
     26    store arg2 as first int register 
     27    goto PC of fib 
     28    get int arg (return value) from context as arg2 
     29 
     30    # return first + second 
     31    add arg1 and arg2 into arg3 (add arg1, arg2, arg3) 
     32    store arg3 in calling context as int return 
     33    goto PC of calling context 
     34}}}