Advertisement
Guest User

Untitled

a guest
Mar 26th, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.18 KB | None | 0 0
  1. (define p_fib
  2. '((fun (fib n)
  3. (vars
  4. []
  5. (iif (< n 2)
  6. (return n)
  7. (return (+ (fib (- n 1)) (fib (- n 2)))))
  8. (return 0)))
  9. (fun (main)
  10. (vars
  11. [(a 5) (b 6) (c 7)]
  12. (print (fib a))
  13. (print "\n")
  14. (print (fib b))
  15. (print "\n")
  16. (print (fib c))
  17. (return 0)))))
  18.  
  19. '((jump _f_main)
  20. (data ST-PTR END-PROG)
  21. (data ST-PTR2 0)
  22. (label _f_fib)
  23. (const _n0 3)
  24. (move (4 ST-PTR) (_n0 ST-PTR))
  25. (move (5 ST-PTR) 2)
  26. (lt (6 ST-PTR) (4 ST-PTR) (5 ST-PTR))
  27. (branch (6 ST-PTR) L0)
  28. (jump L1)
  29. (label L0)
  30. (move (7 ST-PTR) (_n0 ST-PTR))
  31. (move (1 ST-PTR) (7 ST-PTR))
  32. (jump (0 ST-PTR))
  33. (jump L2)
  34. (label L1)
  35. (add ST-PTR2 ST-PTR frame-size-0)
  36. (const RETURN_LOC0 L3)
  37. (move (0 ST-PTR2) RETURN_LOC0)
  38. (move (2 ST-PTR2) ST-PTR)
  39. (move (10 ST-PTR) (_n0 ST-PTR))
  40. (move (11 ST-PTR) 1)
  41. (sub (12 ST-PTR) (10 ST-PTR) (11 ST-PTR))
  42. (move (3 ST-PTR2) (12 ST-PTR))
  43. (move ST-PTR ST-PTR2)
  44. (jump _f_fib)
  45. (label L3)
  46. (move ST-PTR2 ST-PTR)
  47. (move ST-PTR (2 ST-PTR))
  48. (move (12 ST-PTR) (1 ST-PTR2))
  49. (add ST-PTR2 ST-PTR frame-size-0)
  50. (const RETURN_LOC1 L4)
  51. (move (0 ST-PTR2) RETURN_LOC1)
  52. (move (2 ST-PTR2) ST-PTR)
  53. (move (15 ST-PTR) (_n0 ST-PTR))
  54. (move (16 ST-PTR) 2)
  55. (sub (17 ST-PTR) (15 ST-PTR) (16 ST-PTR))
  56. (move (3 ST-PTR2) (17 ST-PTR))
  57. (move ST-PTR ST-PTR2)
  58. (jump _f_fib)
  59. (label L4)
  60. (move ST-PTR2 ST-PTR)
  61. (move ST-PTR (2 ST-PTR))
  62. (move (17 ST-PTR) (1 ST-PTR2))
  63. (add (18 ST-PTR) (12 ST-PTR) (17 ST-PTR))
  64. (move (1 ST-PTR) (18 ST-PTR))
  65. (jump (0 ST-PTR))
  66. (label L2)
  67. (move (19 ST-PTR) 0)
  68. (move (1 ST-PTR) (19 ST-PTR))
  69. (jump (0 ST-PTR))
  70. (const frame-size-0 20)
  71. (label _f_main)
  72. (const _a1 3)
  73. (move (_a1 ST-PTR) 5)
  74. (const _b1 4)
  75. (move (_b1 ST-PTR) 6)
  76. (const _c1 5)
  77. (move (_c1 ST-PTR) 7)
  78. (add ST-PTR2 ST-PTR frame-size-1)
  79. (const RETURN_LOC2 L5)
  80. (move (0 ST-PTR2) RETURN_LOC2)
  81. (move (2 ST-PTR2) ST-PTR)
  82. (move (8 ST-PTR) (_a1 ST-PTR))
  83. (move (3 ST-PTR2) (8 ST-PTR))
  84. (move ST-PTR ST-PTR2)
  85. (jump _f_fib)
  86. (label L5)
  87. (move ST-PTR2 ST-PTR)
  88. (move ST-PTR (2 ST-PTR))
  89. (move (8 ST-PTR) (1 ST-PTR2))
  90. (print-val (8 ST-PTR))
  91. (print-string "\n")
  92. (add ST-PTR2 ST-PTR frame-size-1)
  93. (const RETURN_LOC3 L6)
  94. (move (0 ST-PTR2) RETURN_LOC3)
  95. (move (2 ST-PTR2) ST-PTR)
  96. (move (11 ST-PTR) (_b1 ST-PTR))
  97. (move (3 ST-PTR2) (11 ST-PTR))
  98. (move ST-PTR ST-PTR2)
  99. (jump _f_fib)
  100. (label L6)
  101. (move ST-PTR2 ST-PTR)
  102. (move ST-PTR (2 ST-PTR))
  103. (move (11 ST-PTR) (1 ST-PTR2))
  104. (print-val (11 ST-PTR))
  105. (print-string "\n")
  106. (add ST-PTR2 ST-PTR frame-size-1)
  107. (const RETURN_LOC4 L7)
  108. (move (0 ST-PTR2) RETURN_LOC4)
  109. (move (2 ST-PTR2) ST-PTR)
  110. (move (14 ST-PTR) (_c1 ST-PTR))
  111. (move (3 ST-PTR2) (14 ST-PTR))
  112. (move ST-PTR ST-PTR2)
  113. (jump _f_fib)
  114. (label L7)
  115. (move ST-PTR2 ST-PTR)
  116. (move ST-PTR (2 ST-PTR))
  117. (move (14 ST-PTR) (1 ST-PTR2))
  118. (print-val (14 ST-PTR))
  119. (move (15 ST-PTR) 0)
  120. (move (1 ST-PTR) (15 ST-PTR))
  121. (jump (0 ST-PTR))
  122. (const frame-size-1 16)
  123. (label END-PROG)
  124. 1
  125. (data FILLER (5000 0)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement