Exemplo n.º 1
0
def iType2Args(inst, reg1, reg2):
    l = ["SW", "LW"]
    if inst.upper() not in l:
        raise Exception(" Wrong instruction format")
    if inst.upper() == "LI":
        regCode2 = getRegisterCode(reg1)
        printColor(regCode2, "red")
        writeToFile(regCode2)

        binaddr = ""
        if int(reg2) >= 0:
            binaddr += bin(int(reg2)).replace("0b", "")
            binaddr = binaddr.zfill(21)
        else:
            num = 65535 + int(reg2)
            num = num + 1
            num = str(num)
            binaddr += bin(int(num)).replace("0b", "")
            binaddr = binaddr.zfill(21)
        printColor(binaddr + "\n", "green")
        writeToFile(binaddr + "\n")
    else:
        l = ["SW", "LW"]
        if inst.upper() not in l:
            raise Exception(" Wrong instruction format")

        index = reg2.index("(")
        offset = reg2[0:index]
        offset = int(offset)
        if offset % 4:
            raise Exception(" Boundary is not word aligned")
        binaddr = ""
        binaddr += bin(offset).replace("0b", "")
        binaddr = binaddr.zfill(16)
        index2 = reg2.index(")")
        secondReg = reg2[(index + 1):index2]

        regCode2 = getRegisterCode(secondReg)
        printColor(regCode2, "red")
        writeToFile(regCode2)
        regCode1 = getRegisterCode(reg1)
        printColor(regCode1, "blue")
        writeToFile(regCode1)
        printColor(binaddr + "\n", "green")
        writeToFile(binaddr + "\n")
Exemplo n.º 2
0
def iType3Args(inst, reg1, reg2, dest):
    set1 = ["ADDI", "SUBI", "DIVI", "SLTI", "ORI", "ANDI", "XORI"]
    set2 = ["BEQ", "BNE", "BLT", "BGT"]
    binaddr = ""

    if inst.upper() in set1:
        if int(dest) >= 0:
            # binaddr += bin(int(dest, 16)).replace("0b", "")
            binaddr += bin(int(dest)).replace("0b", "")
            binaddr = binaddr.zfill(16)
        else:
            num = 65535 + int(dest)
            num = num + 1
            # print(num)
            num = str(num)
            # print(num)
            binaddr += bin(int(num)).replace("0b", "")
            binaddr = binaddr.zfill(16)

    elif inst.upper() in set2:
        for i in range(6, len(dest)):
            binaddr += "{0:04b}".format(int(dest[i], 16))
        binaddr = binaddr[0:-2]
        binaddr = "00" + binaddr
    regCode2 = getRegisterCode(reg2)
    regCode1 = getRegisterCode(reg1)

    if inst.upper() in set2:
        temp = regCode2
        regCode2 = regCode1
        regCode1 = temp
    printColor(regCode2, "blue")
    writeToFile(regCode2)

    printColor(regCode1, "green")
    writeToFile(regCode1)

    printColor(binaddr + "\n", "red")
    writeToFile(binaddr + "\n")
Exemplo n.º 3
0
def rType(instruction, r1, r2, r3):
    # r1 = rd
    # r2 = rs
    # r3 = rt
    shamt = "00000"
    instruction = instruction.lower()
    function = function_decoder[instruction]
    if instruction == "mfhi" or instruction == "mflo":
        reg1 = getRegisterCode(r1)
        reg2 = "00000"
        reg3 = "00000"
    elif instruction == "mtlo" or instruction == "mthi":
        reg1 = "00000"
        reg2 = getRegisterCode(r1)
        reg3 = "00000"
    elif (instruction == "div" or instruction == "divu"
          or instruction == "mult" or instruction == "multu"):
        reg1 = "00000"
        reg2 = getRegisterCode(r1)
        reg3 = getRegisterCode(r2)
    elif instruction == "sll" or instruction == "sra" or instruction == "srl":
        reg1 = getRegisterCode(r1)
        reg2 = "00000"
        reg3 = getRegisterCode(r2)
        shamt = "{0:05b}".format(int(r3))
    elif instruction == "move" or instruction == "negu":
        reg1 = getRegisterCode(r1)
        reg2 = "00000"
        reg3 = getRegisterCode(r2)
    elif instruction == "not":
        reg1 = getRegisterCode(r1)
        reg2 = getRegisterCode(r2)
        reg3 = "00000"
    elif instruction == "sllv" or instruction == "srav" or instruction == "srlv":
        reg1 = getRegisterCode(r1)
        reg2 = getRegisterCode(r3)
        reg3 = getRegisterCode(r2)
    else:
        reg1 = getRegisterCode(r1)
        reg2 = getRegisterCode(r2)
        reg3 = getRegisterCode(r3)
    printColor(reg2, "blue")
    printColor(reg3, "green")
    printColor(reg1, "red")
    printColor(shamt, "cyan")
    printColor(function + "\n", "magenta")
    writeToFile(reg2)
    writeToFile(reg3)
    writeToFile(reg1)
    writeToFile(shamt)
    writeToFile(function + "\n")
Exemplo n.º 4
0
from printColor import printColor
from writeToFile import writeToFile
from getRegisterCode import getRegisterCode


def iType2Args(inst, reg1, reg2):
<<<<<<< HEAD
    if inst.upper() == "LI":
        regCode2 = getRegisterCode(reg1)
        printColor(regCode2, "blue")
        writeToFile(regCode2)
||||||| merged common ancestors
    l = ["SW", "LW"]
    if inst.upper() not in l:
        raise Exception(" Wrong instruction format")
=======
    if inst.upper() == "LI":
        regCode2 = getRegisterCode(reg1)
        printColor(regCode2, "red")
        writeToFile(regCode2)
>>>>>>> 738e9a9a680e42e0b1a510a1798ec7bb05446a5f

<<<<<<< HEAD
        binaddr = ""
        if int(reg2) >= 0:
            binaddr += bin(int(reg2)).replace("0b", "")
            binaddr = binaddr.zfill(21)
        else:
            num = 65535 + int(reg2)
            num = num + 1
            num = str(num)