Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (define p_fib
- '((fun (fib n)
- (vars
- []
- (iif (< n 2)
- (return n)
- (return (+ (fib (- n 1)) (fib (- n 2)))))
- (return 0)))
- (fun (main)
- (vars
- [(a 5) (b 6) (c 7)]
- (print (fib a))
- (print "\n")
- (print (fib b))
- (print "\n")
- (print (fib c))
- (return 0)))))
- '((jump _f_main)
- (data ST-PTR END-PROG)
- (data ST-PTR2 0)
- (label _f_fib)
- (const _n0 3)
- (move (4 ST-PTR) (_n0 ST-PTR))
- (move (5 ST-PTR) 2)
- (lt (6 ST-PTR) (4 ST-PTR) (5 ST-PTR))
- (branch (6 ST-PTR) L0)
- (jump L1)
- (label L0)
- (move (7 ST-PTR) (_n0 ST-PTR))
- (move (1 ST-PTR) (7 ST-PTR))
- (jump (0 ST-PTR))
- (jump L2)
- (label L1)
- (add ST-PTR2 ST-PTR frame-size-0)
- (const RETURN_LOC0 L3)
- (move (0 ST-PTR2) RETURN_LOC0)
- (move (2 ST-PTR2) ST-PTR)
- (move (10 ST-PTR) (_n0 ST-PTR))
- (move (11 ST-PTR) 1)
- (sub (12 ST-PTR) (10 ST-PTR) (11 ST-PTR))
- (move (3 ST-PTR2) (12 ST-PTR))
- (move ST-PTR ST-PTR2)
- (jump _f_fib)
- (label L3)
- (move ST-PTR2 ST-PTR)
- (move ST-PTR (2 ST-PTR))
- (move (12 ST-PTR) (1 ST-PTR2))
- (add ST-PTR2 ST-PTR frame-size-0)
- (const RETURN_LOC1 L4)
- (move (0 ST-PTR2) RETURN_LOC1)
- (move (2 ST-PTR2) ST-PTR)
- (move (15 ST-PTR) (_n0 ST-PTR))
- (move (16 ST-PTR) 2)
- (sub (17 ST-PTR) (15 ST-PTR) (16 ST-PTR))
- (move (3 ST-PTR2) (17 ST-PTR))
- (move ST-PTR ST-PTR2)
- (jump _f_fib)
- (label L4)
- (move ST-PTR2 ST-PTR)
- (move ST-PTR (2 ST-PTR))
- (move (17 ST-PTR) (1 ST-PTR2))
- (add (18 ST-PTR) (12 ST-PTR) (17 ST-PTR))
- (move (1 ST-PTR) (18 ST-PTR))
- (jump (0 ST-PTR))
- (label L2)
- (move (19 ST-PTR) 0)
- (move (1 ST-PTR) (19 ST-PTR))
- (jump (0 ST-PTR))
- (const frame-size-0 20)
- (label _f_main)
- (const _a1 3)
- (move (_a1 ST-PTR) 5)
- (const _b1 4)
- (move (_b1 ST-PTR) 6)
- (const _c1 5)
- (move (_c1 ST-PTR) 7)
- (add ST-PTR2 ST-PTR frame-size-1)
- (const RETURN_LOC2 L5)
- (move (0 ST-PTR2) RETURN_LOC2)
- (move (2 ST-PTR2) ST-PTR)
- (move (8 ST-PTR) (_a1 ST-PTR))
- (move (3 ST-PTR2) (8 ST-PTR))
- (move ST-PTR ST-PTR2)
- (jump _f_fib)
- (label L5)
- (move ST-PTR2 ST-PTR)
- (move ST-PTR (2 ST-PTR))
- (move (8 ST-PTR) (1 ST-PTR2))
- (print-val (8 ST-PTR))
- (print-string "\n")
- (add ST-PTR2 ST-PTR frame-size-1)
- (const RETURN_LOC3 L6)
- (move (0 ST-PTR2) RETURN_LOC3)
- (move (2 ST-PTR2) ST-PTR)
- (move (11 ST-PTR) (_b1 ST-PTR))
- (move (3 ST-PTR2) (11 ST-PTR))
- (move ST-PTR ST-PTR2)
- (jump _f_fib)
- (label L6)
- (move ST-PTR2 ST-PTR)
- (move ST-PTR (2 ST-PTR))
- (move (11 ST-PTR) (1 ST-PTR2))
- (print-val (11 ST-PTR))
- (print-string "\n")
- (add ST-PTR2 ST-PTR frame-size-1)
- (const RETURN_LOC4 L7)
- (move (0 ST-PTR2) RETURN_LOC4)
- (move (2 ST-PTR2) ST-PTR)
- (move (14 ST-PTR) (_c1 ST-PTR))
- (move (3 ST-PTR2) (14 ST-PTR))
- (move ST-PTR ST-PTR2)
- (jump _f_fib)
- (label L7)
- (move ST-PTR2 ST-PTR)
- (move ST-PTR (2 ST-PTR))
- (move (14 ST-PTR) (1 ST-PTR2))
- (print-val (14 ST-PTR))
- (move (15 ST-PTR) 0)
- (move (1 ST-PTR) (15 ST-PTR))
- (jump (0 ST-PTR))
- (const frame-size-1 16)
- (label END-PROG)
- 1
- (data FILLER (5000 0)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement