Yes, it's a known bug, the problem is with the output of objdump. We need to write a tool to assemble.
Daniel Grunblatt. On Sat, 2 Feb 2002, Mattia Barbon wrote: > 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 >