Hello,
I'm pretty new at avr-gcc and the GNU suite. I'm using WinAVR integrated
with AVR Studio 4.12 (RC1).
Here's the simple function I'm using and the asm code generated (I should
better do a macro out of it).
uint8_t getSwitches(void)
{
return (PINB & SW_MK);
}
@00000074: getSwitches
24: {
+00000074: B183 IN R24,0x03 In from I/O location
+00000075: 2799 CLR R25 Clear Register
26: }
+00000076: 718D ANDI R24,0x1D Logical AND with
immediate
+00000077: 7090 ANDI R25,0x00 Logical AND with
immediate
+00000078: 9508 RET
avr-gcc -mmcu=atmega88 -Wall -gdwarf-2 -DF_CPU=8000000 -O2
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
-Wp,-M,-MP,-MT,main.o,-MF,dep/main.o.d -c ../main.c -o main.o
My questions:
- The C code is not complete in the list file. Usually, the next line
after a '{' is missing. Is there something wrong on my side or should it
simply be like this?
- the function uses 2 registers (16 bits) while it should only use 8 bits.
Is there something wrong on the make settings I used (generated by AVR
Studio btw) or something else?
- I'm surely lacking some knowledge here, should I first start reading the
make manual, the gcc one or simply improve my C knowledge?
Thanks,
David
_______________________________________________
AVR-GCC-list mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/avr-gcc-list