fix: исправил условия перехода

This commit is contained in:
ElectronixTM
2025-03-29 22:40:24 +03:00
parent 88a34b87ab
commit 621eb13692

View File

@ -276,13 +276,13 @@ class VM:
def _branch_callback(self, cond: int, disp: int) -> None: def _branch_callback(self, cond: int, disp: int) -> None:
c = Condition(cond) c = Condition(cond)
vm_c = Condition(self.cc) vm_c = Condition(self.cc)
if (c.v & vm_c.v) & (c.n & vm_c.n) & (c.z & vm_c.z) == c.i: if (c.v & vm_c.v) | (c.n & vm_c.n) | (c.z & vm_c.z) == c.i:
self.pc = c_uint32(self.pc.value + disp) self.pc = c_uint32(self.pc.value + disp)
def _branch_indexed_callback(self, cond: int, r1: int, disp: int) -> None: def _branch_indexed_callback(self, cond: int, r1: int, disp: int) -> None:
c = Condition(cond) c = Condition(cond)
vm_c = Condition(self.cc.value) vm_c = Condition(self.cc.value)
if (c.v & vm_c.v) & (c.n & vm_c.n) & (c.z & vm_c.z) == c.i: if (c.v & vm_c.v) | (c.n & vm_c.n) | (c.z & vm_c.z) == c.i:
addr = self.registers[r1].value + disp addr = self.registers[r1].value + disp
self.pc = c_uint32(addr) self.pc = c_uint32(addr)