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.

41 lines
961 B

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_val(self, value, bits=None):
if bits is None:
bits = self.n_bits
return value & ((1 << bits) - 1)
def trucate(self):
self.value = self.truncate_val(self.value)
def set(self, value):
if value < 0:
self.value = self.truncate_val(abs(value), self.n_bits - 1)
self.negate()
self.trucate()
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