|
|
|
@ -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 |