Exemplo n.º 1
0
 def getCode(self, line):
     elements = line.split(" ")
     result = ""
     if elements[0] in self.codes:
         elements = Service.DeleteCommas(elements)
         imm = Service.Str2Num(elements[-1])
         imm = Service.Addr2BinU(imm, 20)
         result += imm
         registers = Registers.Registers()
         result += registers.getAddress(elements[1])
         result += self.opcode
     else:
         Service.ERROR("Error: " + Service.InstNotFound + "in line: " +
                       line)
     return result
Exemplo n.º 2
0
    def getCode(self, line):
        elements = line.split(" ")
        result = ""
        if elements[0] in self.codes:
            elements = Service.DeleteCommas(elements)
            result = self.funct7.get(elements[0], "0000000")
            registers = Registers.Registers()
            result += registers.getAddress(elements[-1])
            result += registers.getAddress(elements[-2])
            result += self.funct3[elements[0]]
            result += registers.getAddress(elements[1])
            result += self.opcode
        else:
            Service.ERROR("Error: " + Service.InstNotFound + "in line: " +
                          line)

        return result
Exemplo n.º 3
0
 def getCode(self, line, labels):
     elements = line.split(" ")
     result = ""
     if elements[0] in self.codes:
         elements = Service.DeleteCommas(elements)
         addr = labels[elements[-1]]
         addr = Service.Addr2BinU(addr, 21)
         addr = addr[::-1]
         result += addr[20]
         result += addr[1:11][::-1]
         result += addr[11]
         result += addr[12:20][::-1]
         registers = Registers.Registers()
         result += registers.getAddress(elements[1])
         result += self.opcode
     else:
         Service.ERROR("Error: " + Service.InstNotFound + "in line: " +
                       lines)
     return result
Exemplo n.º 4
0
 def getCode(self, line):
     elements = line.split(" ")
     result = ""
     if elements[0] in self.codes:
         elements = Service.DeleteCommas(elements)
         addr = elements[-1]
         addr = addr.split("(")
         offset = Service.Str2Num(addr[0])
         offset = Service.Addr2Bin(offset, 12)
         result += offset
         addr[-1] = addr[-1][:-1]
         registers = Registers.Registers()
         result += registers.getAddress(addr[-1])
         result += self.funct3[elements[0]]
         result += registers.getAddress(elements[1])
         result += self.opcode
     else:
         Service.ERROR("Error: " + Service.InstNotFound + "in line: " +
                       lines)
     return result
Exemplo n.º 5
0
    def getCode(self, line, labels):
        elements = line.split(" ")
        result = ""
        if elements[0] in self.codes:
            #Тут возможна ошибка (надо проеверять есть ли метка в labels)
            elements = Service.DeleteCommas(elements)
            addr = labels[elements[3]]
            addr = Service.Addr2Bin(addr, 13)
            addr = addr[::-1]
            result += addr[12] + addr[5:11][::-1]
            registers = Registers.Registers()
            result += registers.getAddress(elements[2])
            result += registers.getAddress(elements[1])
            result += self.funct3[elements[0]]
            result += addr[1:5][::-1]
            result += addr[11]
            result += self.opcode
        else:
            Service.ERROR("Error: " + Service.InstNotFound + "in line: " +
                          line)

        return result