def exec(self, proc: Processor):
self.proc = proc
first_bits = self.proc.memory.REGISTERS[self.register].values
if not self.literal:
# look up the register binary
second_bits = self.proc.memory.REGISTERS[self.argument].values
else:
# retrieve the converted literal as binary
second_bits = self.argument.values
result = self.operator(first_bits, second_bits)
# add the carry if needed
if self.operator is ripple_add_c or ripple_sub_c:
self.zero_bits[len(self.zero_bits) - 1] = self.proc.external.carry
result = ripple_add(result, self.zero_bits)
self.proc.memory.REGISTERS[self.register].values = result
# increment pc
self.proc.manager.next()
# 67% slower than ArithmeticOperation
评论列表
文章目录