Allgemeine Simulation einer RAM in Python

Die Funktionen read und write müssen aus den Folien entnommen werden, da diese nicht von mir, sondern von Dr. Glaßer stammen und ich sie deshalb nicht veröffentlichen kann und darf.

# vgl. VL
def read(u,v,a): # liefert den Inhalt von Ra
    # siehe VL

# vlg. VL
def write(u,v,a,b): # schreibt b in Ra
    # siehe VL

def ramsimn(ramcode,params):
    #initialisierung der listen
    u = []
    v = []
    i = 0
    for value in params:
        write(u,v,i,value)
        i = i + 1

    br = 0
    while (ramcode[br][0] != 9):
        # Auslesen der Ram-Befehls-Nummer
        command = ramcode[br][0]

        # Parameter zur Vereinfachung setzen
        i = ramcode[br][1]
        j = ramcode[br][2]
        k = ramcode[br][3]

        # command 0: Ri <- Rj
        if (command == 0):
            x = read(u,v,j)
            write(u,v,i,x)
            br = br + 1

        # command 1: Ri <- RRj
        elif (command == 1):
            x = read(u,v,j)
            y = read(u,v,x)
            write(u,v,i,y)
            br = br + 1

        # command 2: RRi <- Rj
        elif (command == 2):
            ri = read(u,v,i)
            rj = read(u,v,j)
            write(u,v,ri,rj)
            br = br + 1

        # command 3: Ri <- j
        elif (command == 3):
            write(u,v,i,j)
            br = br + 1

        # command 4: Ri <- Rj + Rk
        elif (command == 4):
            x = read(u,v,j) + read(u,v,k)
            write(u,v,i,x)
            br = br + 1

        # command 5: Ri <- Rj - Rk
        elif (command == 5):
            x = read(u,v,j) - read(u,v,k)
            if (x < 0):
                x = 0
            write(u,v,i,x)
            br = br + 1

        # command 6: GOTO i
        elif (command == 6):
            br = i

        # command 7: IF Ri = 0 GOTO j
        elif (command == 7):
            if (read(u,v,i) == 0):
                br = j
            else:
                br = br + 1

        # command 8: IF Ri > 0 GOTO j
        elif (command == 8):
            if (read(u,v,i) > 0):
                br = j
            else:
                br = br + 1

    return v[0]

Schreibe den ersten Kommentar

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.