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.

45 lines
1.0 KiB

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 complement(self):
self.value = self.value ^ ((1 << self.n_bits) - 1)
def negate(self):
self.complement()
self.value += 1
class Acumulator(Register):
positive_flag = False
negative_flag = False
zero_flag = False
carry = False
def add(self, register):
pass