I'm sorry if this is a known bug. my.pasm ( useless, just a contrived example ): set I1, 12 FOO: if I1, FOO BAR: if I1, BAR if I1, FOO end
assembly: 0x816bda8: push %ebp 0x816bda9: mov %esp,%ebp 0x816bdab: int3 0x816bdac: movl $0xc,0x815150c 0x816bdb6: mov %esi,%esi 0x816bdb8: mov 0x815150c,%eax 0x816bdbd: cmp $0x0,%eax 0x816bdc0: jne 0x816bdb7 <== wrong 0x816bdc6: nop 0x816bdc7: mov 0x815150c,%eax 0x816bdcc: cmp $0x0,%eax 0x816bdcf: jne 0x816bdc6 <== correct 0x816bdd5: nop 0x816bdd6: mov 0x815150c,%eax 0x816bddb: cmp $0x0,%eax 0x816bdde: jne 0x816bdb7 <== wrong 0x816bde4: nop 0x816bde5: leave 0x816bde6: ret If I move the "set I1, 12" after the foo label, both jumps are correct. Regards Mattia