Zorbing

[TGI] Stackmaschine2 - Kontrollsignale und Sprungbedingungen

Jun 6th, 2013
268
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. declare register AR(15:0), DR(19:0), IR(3:0), SP(15:0), TEMP(15:0), PC(15:0);
  2. declare memory MEM(AR,DR);
  3. INIT:   PC <- 0, AR <- 0, SP <- $FFFF, DR <- 0, TEMP <- 0;  # c0
  4. FETCH:  AR <- PC;               # c1
  5.     read MEM;               # c2
  6.     PC <- PC + 1,               # c3
  7.     IR <- DR(19:16) |           # 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),             # c5
  15.     SP <- SP - 1;               # c6
  16.     read MEM,               # c2
  17.     AR <- SP;               # c7
  18.     write MEM | goto FETCH;         # c8
  19. POP:    AR <- SP,               # c7
  20.     if SP <> $FFFF then         # k6
  21.         SP <- SP + 1            # c9
  22.     fi;
  23.     read MEM,               # c2
  24.     AR <- DR(15:0);             # c5
  25.     write MEM | goto FETCH;         # c8
  26. SUB:    AR <- SP,               # c7
  27.     SP <- SP + 1;               # c9
  28.     read MEM,               # c2
  29.     AR <- SP;               # c7
  30.     TEMP <- DR(15:0),           # cA
  31.     read MEM;               # c2
  32.     TEMP <- TEMP - DR(15:0);        # cB
  33.     DR(15:0) <- TEMP;           # cC
  34.     write MEM | goto FETCH;         # c8
  35. NOT:    AR <- SP;               # c7
  36.     read MEM;               # c2
  37.     TEMP <- not DR(15:0);           # cD
  38.     DR(15:0) <- TEMP;           # cC
  39.     write MEM | goto FETCH;         # c8
  40. JNZ:    AR <- SP,               # c7
  41.     SP <- SP + 1;               # c9
  42.     read MEM;               # c2
  43.     TEMP <- DR(15:0);           # cA
  44.     if TEMP <> 0 then goto JNZ1 fi;     # k7
  45.     SP <- SP + 1 | goto FETCH;      # c9
  46. JNZ1:   AR <- SP,               # c7
  47.     SP <- SP + 1;               # c9
  48.     read MEM;               # c2
  49.     PC <- DR(15:0) | goto FETCH;        # cE
Advertisement
Add Comment
Please, Sign In to add comment