Esempio n. 1
0
def direc(line, addressCounter):

    tokens=line.split()
    if(len(tokens)>0):
        for t_indx in range(len(tokens)):
            token = tokens[t_indx]
            if(token[0]=="."):
                if(token[1:]=="text"):
                    symtab_append("address:"+str(addressCounter)+"\tname:text\ttype:label\n") #appending to symbol table
                elif(token[1:]=="data"):
                    symtab_append("address:"+str(addressCounter)+"\tname:data\ttype:label\n")
                elif(token[1:]=="word"):
                    symtab_update()
                    value = tokens[t_indx+1]
                    v_bin = "0000000"+bin(int(value))[2:]
                    v_bin = v_bin[-8:]
                    mem_mod.update_memory(addressCounter,v_bin)
                    addressCounter+=4
                elif(token[1:]=="doubleword"):
                    symtab_update()
                    value = tokens[t_indx+1]
                    v_bin = "0000000"+bin(int(value))[2:]
                    v_bin = v_bin[-8:]
                    mem_mod.update_memory(addressCounter+4,v_bin)
                    addressCounter+=8
                else:
                    print("Unrecognized assembler directive!")

        return addressCounter
Esempio n. 2
0
def stb(line):
    rs = int(line[6:11], 2)
    ra = int(line[11:16], 2)
    ds = int(line[16:30], 2)
    t1 = int(mem_man.read_register(ra), 2)
    ea = ds + t1
    data = mem_man.read_register(rs)
    mem_man.update_memory(ea, data[-8:])
Esempio n. 3
0
def stw(line):
    rs = int(line[6:11], 2)
    ra = int(line[11:16], 2)
    ds = int(line[16:30], 2)
    t1 = int(mem_man.read_register(ra), 2)
    ea = ds + t1
    data = mem_man.read_register(rs)
    mem_man.update_memory(ea, data[-8:])
    mem_man.update_memory(ea + 1, data[-16:-8])
    mem_man.update_memory(ea + 2, data[-24:-16])
    mem_man.update_memory(ea + 3, data[-32:-24])
Esempio n. 4
0
def std(line):
    rs = int(line[6:11], 2)
    ra = int(line[11:16], 2)
    ds = int(line[16:30], 2)
    t1 = int(mem_man.read_register(ra), 2)
    disp = ds * 4
    ea = disp + t1
    data = mem_man.read_register(rs)
    mem_man.update_memory(ea, data[-8:])
    mem_man.update_memory(ea + 1, data[-16:-8])
    mem_man.update_memory(ea + 2, data[-24:-16])
    mem_man.update_memory(ea + 3, data[-32:-24])
    mem_man.update_memory(ea + 4, data[-40:-32])
    mem_man.update_memory(ea + 5, data[-48:-40])
    mem_man.update_memory(ea + 6, data[-56:-48])
    mem_man.update_memory(ea + 7, data[-64:-56])