diff --git a/register.py b/register.py new file mode 100644 index 0000000..ad2c71d --- /dev/null +++ b/register.py @@ -0,0 +1,32 @@ +class Register: + def __init__(self, n_bits, name): + self.n_bits = n_bits + self.name = name + self.value = 0 + + 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