You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

32 lines
725 B

  1. class Register:
  2. def __init__(self, n_bits, name):
  3. self.n_bits = n_bits
  4. self.name = name
  5. self.value = 0
  6. def truncate(self, value, bits=None):
  7. if bits is None:
  8. bits = self.n_bits
  9. return value & (1 << bits - 1)
  10. def set(self, value):
  11. if value < 0:
  12. self.value = self.truncate(abs(value), self.n_bits - 1)
  13. self.negate()
  14. self.value = self.truncate(value)
  15. def get(self):
  16. return self.value
  17. def negate(self):
  18. self.value = ~self.value + 1
  19. class Acumulator(Register):
  20. positive_flag = False
  21. negative_flag = False
  22. zero_flag = False
  23. carry = False
  24. def add(self, register):
  25. pass