class Register: registers = [] def __init__(self, n_bits, name=None): self.n_bits = n_bits if name is None: self.name = "r{}".format(len(Register.registers)) else: self.name = name self.value = 0 Register.registers.append(self) def truncate(self, value, bits=None): if bits is None: bits = self.n_bits return value & (1 << bits - 1) def set(self, value): if value < 0: self.value = self.truncate(abs(value), self.n_bits - 1) self.negate() self.value = self.truncate(value) def get(self): return self.value def negate(self): self.value = ~self.value + 1 class Acumulator(Register): positive_flag = False negative_flag = False zero_flag = False carry = False def add(self, register): pass