Zorbing

[TGI] Stackmaschine1 - Kontrollsignale und Sprungbedingungen

Jun 6th, 2013
268
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. % University of Luebeck - RTeasy Version 0.3.4%
  2. declare register AR(15:0), DR(19:0), IR(3:0), SP(15:0), TEMP(15:0), PC(15:0);
  3. declare memory MEM(AR,DR);
  4. INIT:   PC <- 0, AR <- 0, SP <- $FFFF, DR <- 0, TEMP <- 0;  # c0
  5. FETCH:  AR <- PC;                   # c1
  6.     read MEM;                   # c2
  7.     PC <- PC + 1, IR <- DR(19:16) |         # c3, c4
  8.         switch IR { case 0: goto PUSH       # k0
  9.             case 1: goto POP        # k1
  10.             case 2: goto SUB        # k2
  11.             case 3: goto NOT        # k3
  12.             case 4: goto JNZ        # k4
  13.             default: goto FETCH };
  14. PUSH:   AR <- DR(15:0), SP <- SP - 1;           # c5, c6
  15.     read MEM, AR <- SP;             # c2, c7
  16.     write MEM | goto FETCH;             # c8
  17. POP:    AR <- SP, if SP <> $FFFF then SP <- SP + 1 fi;  # c7, k5, c9
  18.     read MEM, AR <- DR(15:0);           # c2, c5
  19.     write MEM | goto FETCH;             # c8
  20. SUB:    AR <- SP, SP <- SP + 1;             # c7, c9
  21.     read MEM, AR <- SP;             # c2, c7
  22.     TEMP <- DR(15:0), read MEM;         # cA, c2
  23.     TEMP <- TEMP - DR(15:0);            # cB
  24.     DR(15:0) <- TEMP;               # cC
  25.     write MEM | goto FETCH;             # c8
  26. NOT:    AR <- SP;                   # c7
  27.     read MEM;                   # c2
  28.     TEMP <- not DR(15:0);               # cD
  29.     DR(15:0) <- TEMP;               # cC
  30.     write MEM | goto FETCH;             # c8
  31. JNZ:    AR <- SP, SP <- SP + 1;             # c7, c9
  32.     read MEM;                   # c2
  33.     TEMP <- DR(15:0);               # cA
  34.     if TEMP <> 0 then goto JNZ1 fi;         # k6
  35.     SP <- SP + 1 | goto FETCH;          # c9
  36. JNZ1:   AR <- SP, SP <- SP + 1;             # c7, c9
  37.     read MEM;                   # c2
  38.     PC <- DR(15:0) | goto FETCH;            # cE
Advertisement
Add Comment
Please, Sign In to add comment