Zorbing icon

[TGI] Stackmaschine2 - Kontrollsignale und Sprungbedingungen

Zorbing | PRO | 06/06/13 01:54:13 PM UTC | 0 ⭐ | 239 👁️ | Never ⏰ | []
ASM (NASM) |

0 B

|

None

|

0 👍

/

0 👎

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,               # c3
    IR <- DR(19:16) |           # 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),             # c5
    SP <- SP - 1;               # c6
    read MEM,               # c2
    AR <- SP;               # c7
    write MEM | goto FETCH;         # c8
POP:    AR <- SP,               # c7
    if SP <> $FFFF then         # k6
        SP <- SP + 1            # c9
    fi;
    read MEM,               # c2
    AR <- DR(15:0);             # c5
    write MEM | goto FETCH;         # c8
SUB:    AR <- SP,               # c7
    SP <- SP + 1;               # c9
    read MEM,               # c2
    AR <- SP;               # c7
    TEMP <- DR(15:0),           # cA
    read MEM;               # 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,               # c7
    SP <- SP + 1;               # c9
    read MEM;               # c2
    TEMP <- DR(15:0);           # cA
    if TEMP <> 0 then goto JNZ1 fi;     # k7
    SP <- SP + 1 | goto FETCH;      # c9
JNZ1:   AR <- SP,               # c7
    SP <- SP + 1;               # c9
    read MEM;               # c2
    PC <- DR(15:0) | goto FETCH;        # cE

Comments