Zorbing icon

[TGI] Register-Register-Maschine

Zorbing | PRO | 06/06/13 07:29:43 PM UTC | 0 ⭐ | 296 👁️ | Never ⏰ | []
ASM (NASM) |

0 B

|

None

|

0 👍

/

0 👎

declare register AR(15:0), DR(19:0), SP(15:0), PC(15:0);
declare memory MEM(AR,DR);
INIT:   PC <- 0, AR <- 0, SP <- $FFFF, DR <- 0;
FETCH:  AR <- PC;
    read MEM, PC <- PC + 1 |
        switch DR(19:16) { case 0: goto PUSH
            case 1: goto POP
            case 2: goto SUB
            case 3: goto NOT
            case 4: goto JNZ
            default: goto FETCH };
PUSH:   AR <- DR(15:0), SP <- SP - 1;
    read MEM, AR <- SP;
    write MEM | goto FETCH;
POP:    AR <- SP, if SP <> $FFFF then SP <- SP + 1 fi;
    read MEM, AR <- DR(15:0);
    write MEM | goto FETCH;
SUB:    AR <- SP, SP <- SP + 1;
    read MEM, AR <- SP;
    AR <- DR(15:0), read MEM;
    AR <- AR - DR(15:0);
    DR(15:0) <- AR, AR <- SP;
    write MEM | goto FETCH;
NOT:    AR <- SP;
    read MEM;
    AR <- not DR(15:0);
    DR(15:0) <- AR, AR <- SP;
    write MEM | goto FETCH;
JNZ:    AR <- SP, SP <- SP + 1;
    read MEM;
    if DR(15:0) <> 0 then goto JNZ1 fi;
    SP <- SP + 1 | goto FETCH;
JNZ1:   AR <- SP, SP <- SP + 1;
    read MEM;
    PC <- DR(15:0) | goto FETCH;

Comments