# Simple recursive fibonacci implementation, roughly equivalent to: # # int fibonacci (int arg) # { # if (arg < 2) # return arg # return fibonacci (arg-1) + fibonacci (arg-2) # } # Initial state: # stack: [arg] # 0: DUP # stack: [arg, arg] # 1: PUSH_CONST 2 # stack: [arg, arg, 2] # 2: BINARY_COMPARE_LT # stack: [arg, (arg < 2)] # 3: JUMP_ABS_IF_TRUE 13 # stack: [arg] # 4: DUP # stack: [arg, arg] # 5: PUSH_CONST 1 # stack: [arg, arg, 1] # 6: BINARY_SUBTRACT # stack: [arg, (arg - 1) # 7: RECURSE # stack: [arg, fib(arg - 1)] # 8: ROT # stack: [fib(arg - 1), arg] # 9: PUSH_CONST 2 # stack: [fib(arg - 1), arg, 2] # 10: BINARY_SUBTRACT # stack: [fib(arg - 1), arg, (arg - 2) # 11: RECURSE # stack: [fib(arg - 1), fib(arg - 1)] # 12: BINARY_ADD # stack: [fib(arg - 1) + fib(arg - 1)] # 13: RETURN