Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module Part3 where
- import TAMCode
- import TAMInterpreter
- test = [LOADL 1, LOADL 2, ADD, PUTINT, LABEL "end", STORE (SB (-0))]
- 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"]
- part2 = [ GETINT, -- Read integer n onto stack
- CALL "fac",
- JUMP "end",
- LABEL "fac",
- LOAD (LB (-1)), -- Make 2 copies of n
- LOAD (LB (-1)), -- Make 2 copies of n
- LABEL "FACloop",
- LOADL 1, -- Load the value 1
- SUB, -- n-1 is on stack
- LOAD (LB 4),
- JUMPIFZ "FACend",
- LOAD (LB 3),
- LOAD (LB 4),
- MUL, -- SB = n(n-1)
- LOAD (LB 4),
- POP 2 2,
- JUMP "FACloop",
- LABEL "FACend",
- POP 0 1,
- RETURN 1 1,
- LABEL "end",
- PUTINT,
- HALT]
Add Comment
Please, Sign In to add comment