Guest User

Untitled

a guest
Apr 20th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.82 KB | None | 0 0
  1. module Part3 where
  2.  
  3. import TAMCode
  4. import TAMInterpreter
  5.  
  6. test = [LOADL 1, LOADL 2, ADD, PUTINT, LABEL "end", STORE (SB (-0))]
  7.  
  8.  
  9. part1 = [ GETINT,LOADL 1,LOAD (SB 0),LSS,JUMPIFZ "end",LOADL 1,LABEL "loop",LOAD (SB 1),PUTINT,LOADL 1,ADD,LOAD (SB 0),LOAD (SB 1),LSS,JUMPIFNZ "end",JUMP "loop",LABEL "end"]
  10.  
  11. part2 = [ GETINT, -- Read integer n onto stack
  12. CALL "fac",
  13. JUMP "end",
  14.  
  15. LABEL "fac",
  16. LOAD (LB (-1)), -- Make 2 copies of n
  17. LOAD (LB (-1)), -- Make 2 copies of n
  18. LABEL "FACloop",
  19. LOADL 1, -- Load the value 1
  20. SUB, -- n-1 is on stack
  21. LOAD (LB 4),
  22. JUMPIFZ "FACend",
  23. LOAD (LB 3),
  24. LOAD (LB 4),
  25. MUL, -- SB = n(n-1)
  26. LOAD (LB 4),
  27. POP 2 2,
  28. JUMP "FACloop",
  29. LABEL "FACend",
  30. POP 0 1,
  31. RETURN 1 1,
  32.  
  33. LABEL "end",
  34. PUTINT,
  35.  
  36. HALT]
Add Comment
Please, Sign In to add comment