> -----Original Message----- > From: > [email protected] > [mailto:avr-libc-dev-bounces+eweddington=cso.atmel....@nongnu. > org] On Behalf Of Uwe Bonnes > Sent: Thursday, February 05, 2009 7:21 AM > To: [email protected] > Subject: [avr-libc-dev] FAQ: 20:Why does the compiler compile.. > > Hello, > > http://www.gnu.org/savannah-checkouts/non-gnu/avr-libc/user-ma > nual/FAQ.html#faq_intpromote > tells in entry 20: > : # Why does the compiler compile an 8-bit operation that > uses bitwise \ > : operators into a 16-bit operation in assembly? > : var &= ~mask; /* wrong way! */ > : The bitwise "not" operator (~) will also promote the value > in mask to\ > : an int. To keep it an 8-bit value, typecast before the > "not" operator: > : var &= (unsigned char)~mask; > > Does this still hold? > > 3:main.c **** > 4:main.c **** volatile char mychar=0; > 42 .stabn 68,0,4,.LM1-.LFBB1 > 43 .LM1: > 44 000a 1982 std Y+1,__zero_reg__ > 5:main.c **** > 6:main.c **** mychar &= 0xaa; > 45 .stabn 68,0,6,.LM2-.LFBB1 > 46 .LM2: > 47 000c 8981 ldd r24,Y+1 > 48 000e 8A7A andi r24,lo8(-86) > 49 0010 8983 std Y+1,r24 > 7:main.c **** >
Could you elaborate on your question? _______________________________________________ AVR-libc-dev mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/avr-libc-dev
