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
32 lines
725 B
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
|