def instructions_generate(self): instruction_type = ["write", "read", "calc"] index = 0 read = 0 calc = 0 write = 0 while index < 100: operation = np.random.normal(2) operation = int(np.round(operation)) if operation > 2 or operation < 0: pass else: # If operation is 0, it means that is a write. if operation == 0: flag = True while flag: address = np.random.poisson(8) if 0 <= address < 16: write_instruction = Instruction() write_instruction.set_processor_number( self.get_number()) write_instruction.set_operation( instruction_type[0]) write_instruction.set_address_bin(address) write_instruction.set_data(random.randint( 0, 65535)) self.add_instruction(write_instruction) flag = False write += 1 else: pass # If operation is 1, it means that is a read elif operation == 1: flag = True while flag: address = np.random.poisson(8) if 0 <= address < 16: read_instruction = Instruction() read_instruction.set_processor_number( self.get_number()) read_instruction.set_operation(instruction_type[1]) read_instruction.set_address_bin(address) read_instruction.set_data(0) self.add_instruction(read_instruction) flag = False read += 1 else: pass elif operation == 2: calc_instruction = Instruction() calc_instruction.set_processor_number(self.get_number()) calc_instruction.set_operation(instruction_type[2]) calc_instruction.set_address_bin(0) calc_instruction.set_data(0) self.add_instruction(calc_instruction) calc += 1 index += 1 print("Calc:" + str(calc)) print("Read:" + str(read)) print("Write:" + str(write))
def insert_instruction(self, operation, address, data, index): instruction = Instruction() instruction.set_operation(operation) instruction.set_address_bin(address) instruction.set_data(data) self.instructions.insert(index, instruction)