code: def load_machine(self, descriptor):
  		
  		def get_cfg(name):
  			if(name in descriptor):
  				return descriptor[name]
  			else:
  				return defaults[name]
  		self.processor = Processor(width = get_cfg("width"))
  		self.rom = ROM(get_cfg("rom_size"), get_cfg("rom_width"))
  		self.processor.register_memory_device(self.rom)
  		self.registers = []
  
  		if(get_cfg("ram_enable")):
  			self.ram = RAM(get_cfg("ram_size"), get_cfg("ram_width"))
  			self.processor.register_memory_device(self.ram)
  		else:
  			self.ram = None
  
  		if(get_cfg("flash_enable")):
  			self.flash = Flash(get_cfg("flash_size"), get_cfg("flash_width"))
  			self.processor.register_device(self.flash)
  		else:
  			self.flash = None
  
  		for register in get_cfg("registers"):
  			self.processor.add_register(register)
  			self.registers.append(register)
  		for command in get_cfg("commands"):
  			self.processor.register_command(command)
  		self.processor.setup_done()
docs: Load a complete register machine.
  			The descriptor is a map, unspecified values are loaded from the default values.