"add"
*am33
{
+ int z, c, n, v;
+ unsigned long sum;
int srcreg1, srcreg2, dstreg;
PC = cia;
else
dstreg = REG_E0 + RD0;
- genericAdd3 (State.regs[srcreg1], State.regs[srcreg2], dstreg);
+ sum = source1 + source2;
+ State.regs[dstreg] = sum;
+
+ z = (sum == 0);
+ n = (sum & 0x80000000);
+ c = (sum < source1) || (sum < source2);
+ v = ((source1 & 0x80000000) == (source2 & 0x80000000)
+ && (source1 & 0x80000000) != (sum & 0x80000000));
+
+ PSW &= ~(PSW_Z | PSW_N | PSW_C | PSW_V);
+ PSW |= ((z ? PSW_Z : 0) | ( n ? PSW_N : 0)
+ | (c ? PSW_C : 0) | (v ? PSW_V : 0));
}
// 1111 1101 1101 1000 Rn Rn IMM32; cmp imm24,Rn