Hi, The following code:
int a=0,b=0; asm(";oops begin...\n"); float data; data = 12.345; if (data==0.0) { a=1; } else { a=2; } if (data!=0.0) { b=3; } else { b=4; } asm(";oops end...\n"); Always returns a=1 and b=3 ... which means there is some bug... the .s file follows: /* #APP */ ;oops begin... /* #NOAPP */ mov #llo(0x4145851f), r10 mov #lhi(0x4145851f), r11 mov #llo(0x0), r12 mov #lhi(0x0), r13 mov r10, r14 mov r11, r15 call #__eqsf2 tst r15 jne .L89 mov #llo(1), r9 jmp .L91 .L89: mov #llo(2), r9 .L91: mov #llo(0x0), r12 mov #lhi(0x0), r13 mov r10, r14 mov r11, r15 call #__nesf2 tst r15 jeq .L92 mov #llo(3), r15 jmp .L94 .L92: mov #llo(4), r15 .L94: /* #APP */ ;oops end... /* #NOAPP */ How you can see, both comparisons are wrong. I had similar problems with less than "<" comparing floats, but I don't have a source code now to demonstrate. I compiled with: msp430-gcc -O -Wall -mmcu=msp430x149 -S -o xxx.s xxx.c Thanks, Pedro -- .''`. Pedro Zorzenon Neto <p...@terra.com.br> : :' : Debian GNU/Linux | GNU/Hurd: <http://www.debian.org> `. `'` Debian BR: <http://debian-br.cipsga.org.br> `- Be Happy! Be FREE!