andreas@d700 comp $ avr-gcc -v Reading specs from /usr/local/avr/lib/gcc-lib/avr/3.3.1/specs Konfiguriert mit: ./configure --target=avr --prefix=/usr/local/avr --enable-languages=c,c++ Thread model: single gcc-Version 3.3.1 20030720 (prerelease) andreas@d700 comp $ avr-gcc -Os -g -c -Wall -mmcu=atmega8 gcd.c andreas@d700 comp $ avr-size gcd.o text data bss dec hex filename 54 0 0 54 36 gcd.o andreas@d700 comp $ avr-objdump -d --source gcd.o 00000000 : unsigned int gcd (unsigned int a, unsigned int b) { if( b == 0 ){ 0: 61 15 cp r22, r1 2: 71 05 cpc r23, r1 4: 31 f4 brne .+12 ; 0x12 if( a == 0 ) 6: 00 97 sbiw r24, 0x00 ; 0 8: 11 f4 brne .+4 ; 0xe a = 1; a: 81 e0 ldi r24, 0x01 ; 1 c: 90 e0 ldi r25, 0x00 ; 0 return a; e: bc 01 movw r22, r24 10: 10 c0 rjmp .+32 ; 0x32 } if( a != 0 ){ 12: 00 97 sbiw r24, 0x00 ; 0 14: 71 f0 breq .+28 ; 0x32 while( a != b ){ 16: 86 17 cp r24, r22 18: 97 07 cpc r25, r23 1a: 59 f0 breq .+22 ; 0x32 if( a < b ){ 1c: 86 17 cp r24, r22 1e: 97 07 cpc r25, r23 20: 18 f4 brcc .+6 ; 0x28 b -= a; 22: 68 1b sub r22, r24 24: 79 0b sbc r23, r25 26: 02 c0 rjmp .+4 ; 0x2c }else{ a -= b; 28: 86 1b sub r24, r22 2a: 97 0b sbc r25, r23 2c: 86 17 cp r24, r22 2e: 97 07 cpc r25, r23 30: a9 f7 brne .-22 ; 0x1c } } } return b; } 32: cb 01 movw r24, r22 34: 08 95 ret