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

Reply via email to