コード例 #1
0
ファイル: control.py プロジェクト: AntLouiz/DatapathWay
    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")
コード例 #2
0
ファイル: control.py プロジェクト: AntLouiz/DatapathWay
    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")
コード例 #3
0
ファイル: logic.py プロジェクト: AntLouiz/DatapathWay
    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
コード例 #4
0
ファイル: logic.py プロジェクト: AntLouiz/DatapathWay
    def makeNot(self, a):
        a_len = len(a)

        a = to_decimalC2(a)

        result = to_binaryC2(~a, a_len)

        return result