As Weddington, Eric wrote:

> [...] I want to make sure that with the macro, gcc won't do
> something weird like:

>       in r24,85-32
> /* #APP */
>  ;  61 "test.c" 1
>       ori  r24,96
>  ;  0 "" 2
> /* #NOAPP */
>       out 85-32,r24
> /* #APP */
>  ;  61 "test.c" 1
>       andi  r25,-33
>  ;  0 "" 2
> /* #NOAPP */
>       out 85-32,r25

> where it chooses a different register for the second __asm__
> statement and that different register has basically invalid data.

As your inline asm statement cannot ensure this cannot happen because
it is not specified in the parameter lists of the statements (even if
not right now, who knows what will happen with it next year?), I
cannot really understand your resistance against using a temporary
"variable" (which actually never exists as a variable at all but is
just a register again, but a register that is guaranteed the same for
both instructions).

-- 
cheers, J"org               .-.-.   --... ...--   -.. .  DL8DTL

http://www.sax.de/~joerg/                        NIC: JW11-RIPE
Never trust an operating system you don't have sources for. ;-)


_______________________________________________
AVR-libc-dev mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/avr-libc-dev

Reply via email to