Advertisement
Guest User

LoLa Native Implementation Test

a guest
Jul 17th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.54 KB | None | 0 0
  1.  
  2. function Fibonacci1(num)
  3. {
  4. if (num <= 1) {
  5. return 1;
  6. }
  7. return Fibonacci1(num - 1) + Fibonacci1(num - 2);
  8. }
  9.  
  10. function Fibonacci2(num)
  11. {
  12. var a = 1;
  13. var b = 0;
  14. var temp;
  15.  
  16. while (num >= 0)
  17. {
  18. temp = a;
  19. a = a + b;
  20. b = temp;
  21. num = num - 1;
  22. }
  23.  
  24. return b;
  25. }
  26.  
  27. function Retless(a)
  28. {
  29. Print("a = ", a);
  30. }
  31.  
  32. Print("Fibonacci(4) = ");
  33. Print(Fibonacci1(4));
  34. Print(Fibonacci2(4));
  35.  
  36. var list = [ "This", "is", "a" ];
  37. list = list + [ "Sentence" ];
  38. Print(list);
  39.  
  40. // is this comment?
  41. var a = 10;
  42. Print(a);
  43. a = "Hallo";
  44. Print(a);
  45.  
  46. var glob;
  47. function SetGlob(x) {
  48. glob = x;
  49. Print("Set glob to '", x, "'");
  50. }
  51. SetGlob("glob-content");
  52. Print("glob is '", glob, "'");
  53.  
  54. var counter = CreateCounter();
  55. Print("cnt = ", counter.GetValue());
  56. Print("cnt = ", counter.Increment());
  57. Print("cnt = ", counter.Increment());
  58. Print("cnt = ", counter.Decrement());
  59.  
  60. RealGlobal = 10;
  61.  
  62. Print(ReadOnlyGlobal);
  63. // ReadOnlyGlobal = 10;
  64.  
  65. list[1] = "was";
  66. Print(list[0]);
  67.  
  68. for(x in list) {
  69. Print(x);
  70. }
  71.  
  72. =======================================================================
  73.  
  74. 000000 <main>:
  75. 000000 push_str 'Fibonacci(4) = '
  76. 000012 call_fn Print, 1
  77. 00001B pop
  78. 00001C push_num 4
  79. 000025 call_fn Fibonacci1, 1
  80. 000033 call_fn Print, 1
  81. 00003C pop
  82. 00003D push_num 4
  83. 000046 call_fn Fibonacci2, 1
  84. 000054 call_fn Print, 1
  85. 00005D pop
  86. 00005E push_str 'a'
  87. 000062 push_str 'is'
  88. 000067 push_str 'This'
  89. 00006E array_pack 3
  90. 000071 store_global 0
  91. 000074 load_global 0
  92. 000077 push_str 'Sentence'
  93. 000082 array_pack 1
  94. 000085 add
  95. 000086 store_global 0
  96. 000089 load_global 0
  97. 00008C call_fn Print, 1
  98. 000095 pop
  99. 000096 push_num 10
  100. 00009F store_global 1
  101. 0000A2 load_global 1
  102. 0000A5 call_fn Print, 1
  103. 0000AE pop
  104. 0000AF push_str 'Hallo'
  105. 0000B7 store_global 1
  106. 0000BA load_global 1
  107. 0000BD call_fn Print, 1
  108. 0000C6 pop
  109. 0000C7 push_str 'glob-content'
  110. 0000D6 call_fn SetGlob, 1
  111. 0000E1 pop
  112. 0000E2 push_str '''
  113. 0000E6 load_global 2
  114. 0000E9 push_str 'glob is ''
  115. 0000F5 call_fn Print, 3
  116. 0000FE pop
  117. 0000FF call_fn CreateCounter, 0
  118. 000110 store_global 3
  119. 000113 load_global 3
  120. 000116 call_obj GetValue, 0
  121. 000122 push_str 'cnt = '
  122. 00012B call_fn Print, 2
  123. 000134 pop
  124. 000135 load_global 3
  125. 000138 call_obj Increment, 0
  126. 000145 push_str 'cnt = '
  127. 00014E call_fn Print, 2
  128. 000157 pop
  129. 000158 load_global 3
  130. 00015B call_obj Increment, 0
  131. 000168 push_str 'cnt = '
  132. 000171 call_fn Print, 2
  133. 00017A pop
  134. 00017B load_global 3
  135. 00017E call_obj Decrement, 0
  136. 00018B push_str 'cnt = '
  137. 000194 call_fn Print, 2
  138. 00019D pop
  139. 00019E push_num 10
  140. 0001A7 store_global RealGlobal
  141. 0001B4 load_global ReadOnlyGlobal
  142. 0001C5 call_fn Print, 1
  143. 0001CE pop
  144. 0001CF push_str 'was'
  145. 0001D5 push_num 1
  146. 0001DE load_global 0
  147. 0001E1 array_store
  148. 0001E2 store_global 0
  149. 0001E5 push_num 0
  150. 0001EE load_global 0
  151. 0001F1 array_load
  152. 0001F2 call_fn Print, 1
  153. 0001FB pop
  154. 0001FC load_global 0
  155. 0001FF iter_make
  156. 000200 iter_next
  157. 000201 jif 21B
  158. 000206 store_local 4
  159. 000209 load_local 4
  160. 00020C call_fn Print, 1
  161. 000215 pop
  162. 000216 jmp 200
  163. 00021B ret
  164. 00021C Fibonacci1:
  165. 00021C load_local 0
  166. 00021F push_num 1
  167. 000228 less_eq
  168. 000229 jif 238
  169. 00022E push_num 1
  170. 000237 retval
  171. 000238 load_local 0
  172. 00023B push_num 1
  173. 000244 sub
  174. 000245 call_fn Fibonacci1, 1
  175. 000253 load_local 0
  176. 000256 push_num 2
  177. 00025F sub
  178. 000260 call_fn Fibonacci1, 1
  179. 00026E add
  180. 00026F retval
  181. 000270 ret
  182. 000271 Fibonacci2:
  183. 000271 push_num 1
  184. 00027A store_local 1
  185. 00027D push_num 0
  186. 000286 store_local 2
  187. 000289 load_local 0
  188. 00028C push_num 0
  189. 000295 greater_eq
  190. 000296 jif 2C6
  191. 00029B load_local 1
  192. 00029E store_local 3
  193. 0002A1 load_local 1
  194. 0002A4 load_local 2
  195. 0002A7 add
  196. 0002A8 store_local 1
  197. 0002AB load_local 3
  198. 0002AE store_local 2
  199. 0002B1 load_local 0
  200. 0002B4 push_num 1
  201. 0002BD sub
  202. 0002BE store_local 0
  203. 0002C1 jmp 289
  204. 0002C6 load_local 2
  205. 0002C9 retval
  206. 0002CA ret
  207. 0002CB Retless:
  208. 0002CB load_local 0
  209. 0002CE push_str 'a = '
  210. 0002D5 call_fn Print, 2
  211. 0002DE pop
  212. 0002DF ret
  213. 0002E0 SetGlob:
  214. 0002E0 load_local 0
  215. 0002E3 store_global 2
  216. 0002E6 push_str '''
  217. 0002EA load_local 0
  218. 0002ED push_str 'Set glob to ''
  219. 0002FD call_fn Print, 3
  220. 000306 pop
  221. 000307 ret
  222.  
  223. =======================================================================
  224.  
  225. Fibonacci(4) =
  226. 5
  227. 5
  228. [ This is a Sentence ]
  229. 10
  230. Hallo
  231. Set glob to ' glob-content '
  232. glob is ' glob-content '
  233. cnt = 0
  234. cnt = 1
  235. cnt = 2
  236. cnt = 1
  237. 42
  238. This
  239. This
  240. was
  241. a
  242. Sentence
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement