   0 ;;  example of recursive function call
   0 ;;  fib n
   0 ;;    if n < 2 return n
   0 ;;    else return fib(n - 1) + fib(n - 2)
   0 
   0 ;;  many local variables are required
   0 ;;  t3 = n
   0 ;;  t1 = fib t3 - 1
   0 ;;  retv = fib t3 - 2
   0 ;;  retv = retv + t1
   0 
   0 ;;  r1 = input n, r2 = output retv,
   0 ;;  r3 = link, r4 = sp,
   0 ;;  r5 = t1, r6 = t3, 
   0 
   0 ;;  main() { b = fib(6) }
   0 
   0 .s
   0 	b 100
   0 
   0 .a 0
   0 .c
   0 :main	ld r4 #200  ;; init sp
   1 	ld r1 #6
   2 	jal r3 fib  ;; call fib 3
   3 	st b r2
   4 	trap stop r0
   5 
   5 :fib	st @1 r4 r3  ;; push link
   6 	st @2 r4 r5  ;; push t1
   7 	st @3 r4 r6  ;; push t3
   8 	add r4 r4 #3
   9 
   9 	sub r0 r1 #2 ;; n < 2
  10 	jmp GE else
  11 :then	or r2 r1 r0 ;; retv = n
  12 	jmp always ret
  13 :else	or r6 r1 r0 ;; t3 = n
  14 	sub r1 r6 #1 ;; n - 1
  15 	jal r3 fib
  16 	or r5 r2 r0 ;; t1 = fib n - 1
  17 	sub r1 r6 #2 ;; n - 2
  18 	jal r3 fib  ;; retv = fib n - 2
  19 	add r2 r2 r5
  20 	
  20 	;; restore locals
  20 :ret	ld r6 @0 r4
  21 	ld r5 @-1 r4
  22 	ld r3 @-2 r4
  23 	sub r4 r4 #3
  24 	jr r3
  25 .e
