Пример #1
0
    def parse_r(self, instruccion, operandos):
        subtipo = self.lista_instrucciones[instruccion][2]
        codigo_operacion = self.lista_instrucciones[instruccion][0]

        instruccion_binaria = "0" * 6

        if subtipo == self.SUBTIPO_1:
            instruccion_binaria += "0" * 5
            instruccion_binaria += dec_bin(int(operandos[1]))
            instruccion_binaria += dec_bin(int(operandos[0]))
            instruccion_binaria += dec_bin(int(operandos[2]))
        elif subtipo == self.SUBTIPO_2:
            instruccion_binaria += dec_bin(int(operandos[2]))
            instruccion_binaria += dec_bin(int(operandos[1]))
            instruccion_binaria += dec_bin(int(operandos[0]))
            instruccion_binaria += "0" * 5
        elif subtipo == self.SUBTIPO_3:
            instruccion_binaria += dec_bin(int(operandos[1]))
            instruccion_binaria += dec_bin(int(operandos[2]))
            instruccion_binaria += dec_bin(int(operandos[0]))
            instruccion_binaria += "0" * 5

        instruccion_binaria += codigo_operacion

        return instruccion_binaria
Пример #2
0
    def parse_r(self, instruccion, operandos):
        subtipo = self.lista_instrucciones[instruccion][2]
        codigo_operacion = self.lista_instrucciones[instruccion][0]

        instruccion_binaria = "0" * 6

        if subtipo == self.SUBTIPO_1:
            instruccion_binaria += "0" * 5
            instruccion_binaria += dec_bin(int(operandos[1]))
            instruccion_binaria += dec_bin(int(operandos[0]))
            instruccion_binaria += dec_bin(int(operandos[2]))
        elif subtipo == self.SUBTIPO_2:
            instruccion_binaria += dec_bin(int(operandos[2]))
            instruccion_binaria += dec_bin(int(operandos[1]))
            instruccion_binaria += dec_bin(int(operandos[0]))
            instruccion_binaria += "0" * 5
        elif subtipo == self.SUBTIPO_3:
            instruccion_binaria += dec_bin(int(operandos[1]))
            instruccion_binaria += dec_bin(int(operandos[2]))
            instruccion_binaria += dec_bin(int(operandos[0]))
            instruccion_binaria += "0" * 5

        instruccion_binaria += codigo_operacion

        return instruccion_binaria
Пример #3
0
    def parse_j(self, instruccion, operandos):
        subtipo = self.lista_instrucciones[instruccion][2]
        codigo_operacion = self.lista_instrucciones[instruccion][0]

        instruccion_binaria = "0" * 6

        if subtipo == self.SUBTIPO_1:
            instruccion_binaria += dec_bin(int(operandos[0]))
            instruccion_binaria += "0" * 15
        elif subtipo == self.SUBTIPO_2:
            instruccion_binaria += dec_bin(int(operandos[0]))
            instruccion_binaria += "0" * 5

            # Veo si hay mas de un operando (es decir, existe "rd")
            if len(operandos) > 1:
                instruccion_binaria += dec_bin(int(operandos[1]))
            else:
                instruccion_binaria += "0" * 5

        instruccion_binaria += codigo_operacion

        return instruccion_binaria
Пример #4
0
    def parse_j(self, instruccion, operandos):
        subtipo = self.lista_instrucciones[instruccion][2]
        codigo_operacion = self.lista_instrucciones[instruccion][0]

        instruccion_binaria = "0" * 6

        if subtipo == self.SUBTIPO_1:
            instruccion_binaria += dec_bin(int(operandos[0]))
            instruccion_binaria += "0" * 15
        elif subtipo == self.SUBTIPO_2:
            instruccion_binaria += dec_bin(int(operandos[0]))
            instruccion_binaria += "0" * 5

            # Veo si hay mas de un operando (es decir, existe "rd")
            if len(operandos) > 1:
                instruccion_binaria += dec_bin(int(operandos[1]))
            else:
                instruccion_binaria += "0" * 5

        instruccion_binaria += codigo_operacion

        return instruccion_binaria
Пример #5
0
    def parse_i(self, instruccion, operandos):
        subtipo = self.lista_instrucciones[instruccion][2]
        codigo_operacion = self.lista_instrucciones[instruccion][0]

        instruccion_binaria = codigo_operacion

        if subtipo == self.SUBTIPO_1:
            # Quito los parentesis y lo pongo como un tercer argumento
            operandos[1] = operandos[1].replace("(", " ")
            operandos[1] = operandos[1].replace(")", "")
            operandos.append(operandos[1].split()[1])
            operandos[1] = operandos[1][0]

            instruccion_binaria += dec_bin(int(operandos[2]))
            instruccion_binaria += dec_bin(int(operandos[0]))
            instruccion_binaria += dec_bin(int(operandos[1]), digitos=16)
        elif subtipo == self.SUBTIPO_2 or subtipo == self.SUBTIPO_3:
            instruccion_binaria += dec_bin(int(operandos[1]))
            instruccion_binaria += dec_bin(int(operandos[0]))
            instruccion_binaria += dec_bin(int(operandos[2]), digitos=16)
        elif subtipo == self.SUBTIPO_4:
            instruccion_binaria += "0" * 5
            instruccion_binaria += dec_bin(int(operandos[0]))
            instruccion_binaria += dec_bin(int(operandos[1]), digitos=16)
        elif subtipo == self.SUBTIPO_5:
            instruccion_binaria += dec_bin(int(operandos[0]))
            instruccion_binaria += dec_bin(int(operandos[1]))
            instruccion_binaria += dec_bin(int(operandos[2]), digitos=16)
        elif subtipo == self.SUBTIPO_6:
            instruccion_binaria += dec_bin(int(operandos[0]), digitos=26)

        return instruccion_binaria
Пример #6
0
    def parse_i(self, instruccion, operandos):
        subtipo = self.lista_instrucciones[instruccion][2]
        codigo_operacion = self.lista_instrucciones[instruccion][0]

        instruccion_binaria = codigo_operacion

        if subtipo == self.SUBTIPO_1:
            # Quito los parentesis y lo pongo como un tercer argumento
            operandos[1] = operandos[1].replace("(", " ")
            operandos[1] = operandos[1].replace(")", "")
            operandos.append(operandos[1].split()[1])
            operandos[1] = operandos[1][0]

            instruccion_binaria += dec_bin(int(operandos[2]))
            instruccion_binaria += dec_bin(int(operandos[0]))
            instruccion_binaria += dec_bin(int(operandos[1]), digitos=16)
        elif subtipo == self.SUBTIPO_2 or subtipo == self.SUBTIPO_3:
            instruccion_binaria += dec_bin(int(operandos[1]))
            instruccion_binaria += dec_bin(int(operandos[0]))
            instruccion_binaria += dec_bin(int(operandos[2]), digitos=16)
        elif subtipo == self.SUBTIPO_4:
            instruccion_binaria += "0" * 5
            instruccion_binaria += dec_bin(int(operandos[0]))
            instruccion_binaria += dec_bin(int(operandos[1]), digitos=16)
        elif subtipo == self.SUBTIPO_5:
            instruccion_binaria += dec_bin(int(operandos[0]))
            instruccion_binaria += dec_bin(int(operandos[1]))
            instruccion_binaria += dec_bin(int(operandos[2]), digitos=16)
        elif subtipo == self.SUBTIPO_6:
            instruccion_binaria += dec_bin(int(operandos[0]), digitos=26)

        return instruccion_binaria