Zorbing icon

[TGI] Stackmaschine1 - Kontrollsignale und Sprungbedingungen

Zorbing | PRO | 06/06/13 05:52:03 PM UTC | 0 ⭐ | 243 👁️ | Never ⏰ | []
ASM (NASM) |

0 B

|

None

|

0 👍

/

0 👎

% 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

Comments