In Z80IL.py, OP.SBC computes the subtraction at the operand size but always stores to A as one byte:
tmp = il.sub_borrow(size, lhs, rhs, il.flag("c"), flags="*")
tmp = il.set_reg(1, "A", tmp)
So ed 42 (SBC HL,BC) lifts as A = sbb.w{*}(HL, BC, flag:c) and the 16-bit result never reaches HL.
16-bit compare/subtract is common, so this silently drops pointer arithmetic — 39 sites in one test binary. Example: AND A / SBC HL,BC / LD A,(HL).
In
Z80IL.py,OP.SBCcomputes the subtraction at the operand size but always stores toAas one byte:So
ed 42(SBC HL,BC) lifts asA = sbb.w{*}(HL, BC, flag:c)and the 16-bit result never reachesHL.16-bit compare/subtract is common, so this silently drops pointer arithmetic — 39 sites in one test binary. Example:
AND A / SBC HL,BC / LD A,(HL).