factorial.toy revision 1.3
1# Simple recursive factorial implementation, roughly equivalent to: 2# 3# int factorial (int arg) 4# { 5# if (arg < 2) 6# return arg 7# return arg * factorial (arg - 1) 8# } 9 10# Initial state: 11# stack: [arg] 12 13# 0: 14DUP 15# stack: [arg, arg] 16 17# 1: 18PUSH_CONST 2 19# stack: [arg, arg, 2] 20 21# 2: 22BINARY_COMPARE_LT 23# stack: [arg, (arg < 2)] 24 25# 3: 26JUMP_ABS_IF_TRUE 9 27# stack: [arg] 28 29# 4: 30DUP 31# stack: [arg, arg] 32 33# 5: 34PUSH_CONST 1 35# stack: [arg, arg, 1] 36 37# 6: 38BINARY_SUBTRACT 39# stack: [arg, (arg - 1) 40 41# 7: 42RECURSE 43# stack: [arg, factorial(arg - 1)] 44 45# 8: 46BINARY_MULT 47# stack: [arg * factorial(arg - 1)] 48 49# 9: 50RETURN 51