def execute(self): instruction = self.cpu.pc.next_instruction registers = instruction.get_registers() print(instruction) rd = registers['rd'] rs = registers['rs'] print("Read the register 1: {}{}[{}]".format(rs, ' '*25, to_integer(rs))) rt = registers['rt'] print("Read the register 2: {}{}[{}]".format(rt, ' '*25, to_integer(rt))) register_data1 = self.cpu.registers.get_value(rs) print("Read data 1: {}".format(register_data1)) register_data2 = self.cpu.registers.get_value(rt) print("Read data 2: {}".format(register_data2)) print("ALU-in-1: {}{}[{}]".format(register_data1, ' '*6, to_decimalC2(register_data1))) print("ALU-in-2: {}{}[{}]".format(register_data2, ' '*6, to_decimalC2(register_data2))) alu_result = self.cpu.alu.makeAnd(register_data1, register_data2) print("ALU-result: {}{}[{}]".format(alu_result, ' '*6, to_decimalC2(alu_result))) self.cpu.registers.set_value(rd, alu_result) print("Write data: {}".format(alu_result)) print("Write register: {}{}[{}]".format(rd, ' '*30, to_integer(rd))) print("{}".format("-" * 64)) print("\n\n")
def execute(self): instruction = self.cpu.pc.next_instruction registers = instruction.get_registers() offset = instruction.get_offset() print(instruction) rs = registers['rs'] print("Read the register 1:{}{}{}[{}]".format(' '*20, rs, ' '*6, to_integer(rs))) rt = registers['rt'] print("Read the register 2:{}{}{}[{}]".format(' '*20, rt, ' '*6, to_integer(rt))) register_data1 = self.cpu.registers.get_value(rs) print("Read data 1: {}".format(register_data1)) register_data2 = self.cpu.registers.get_value(rt) print("Read data 2: {}".format(register_data2)) print("ALU-in-1: {}{}[{}]".format(register_data1, ' '*6, to_decimalC2(register_data1))) print("ALU-in-2: {}{}[{}]".format(offset, ' '*6, to_decimalC2(offset))) alu_result = self.cpu.alu.makeSum(register_data1, offset) print("ALU-result: {}{}[{}]".format(alu_result, ' '*6, to_decimalC2(alu_result))) print("Address: {}".format(alu_result)) self.cpu.memory.set_value(alu_result, register_data2) print("Write data: {}{}[{}]".format(register_data2, ' '*6, to_decimalC2(register_data2))) print("{}".format("-" * 64)) print("\n\n")
def makeSum(self, a, b): result = to_decimalC2(a) + to_decimalC2(b) if result > (2**31 -1) or result < -(2**31): print("{}OVERFLOW OCURRENCE{}".format("-" * 20, "-" * 7)) result = to_binaryC2(result) return result
def makeNot(self, a): a_len = len(a) a = to_decimalC2(a) result = to_binaryC2(~a, a_len) return result