Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- % University of Luebeck - RTeasy Version 0.3.4%
- declare register AR(15:0), DR(19:0), IR(3:0), SP(15:0), TEMP(15:0), PC(15:0);
- declare memory MEM(AR,DR);
- INIT: PC <- 0, AR <- 0, SP <- $FFFF, DR <- 0, TEMP <- 0; # c0
- FETCH: AR <- PC; # c1
- read MEM; # c2
- PC <- PC + 1, IR <- DR(19:16) | # c3, c4
- switch IR { case 0: goto PUSH # k0
- case 1: goto POP # k1
- case 2: goto SUB # k2
- case 3: goto NOT # k3
- case 4: goto JNZ # k4
- default: goto FETCH };
- PUSH: AR <- DR(15:0), SP <- SP - 1; # c5, c6
- read MEM, AR <- SP; # c2, c7
- write MEM | goto FETCH; # c8
- POP: AR <- SP, if SP <> $FFFF then SP <- SP + 1 fi; # c7, k5, c9
- read MEM, AR <- DR(15:0); # c2, c5
- write MEM | goto FETCH; # c8
- SUB: AR <- SP, SP <- SP + 1; # c7, c9
- read MEM, AR <- SP; # c2, c7
- TEMP <- DR(15:0), read MEM; # cA, c2
- TEMP <- TEMP - DR(15:0); # cB
- DR(15:0) <- TEMP; # cC
- write MEM | goto FETCH; # c8
- NOT: AR <- SP; # c7
- read MEM; # c2
- TEMP <- not DR(15:0); # cD
- DR(15:0) <- TEMP; # cC
- write MEM | goto FETCH; # c8
- JNZ: AR <- SP, SP <- SP + 1; # c7, c9
- read MEM; # c2
- TEMP <- DR(15:0); # cA
- if TEMP <> 0 then goto JNZ1 fi; # k6
- SP <- SP + 1 | goto FETCH; # c9
- JNZ1: AR <- SP, SP <- SP + 1; # c7, c9
- read MEM; # c2
- PC <- DR(15:0) | goto FETCH; # cE
Advertisement
Add Comment
Please, Sign In to add comment