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
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
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