Da stelln wa uns ma jaantz domm... Bei obigem Codebeispiel denke ich mir bisher, dass hier das Maschinencode-Ergebnis vom Compiler doch schon recht kurz und knackig ausfallen müsste. Oder lohnt es sich auch solche Sequenzen zu optimieren? ..
Und schauen uns die jeweilige *.lls an, nachdem wir in zwei unterschiedlichen Optimierungsstufen compiliert haben. Umgebung: AVRStudio4.18 Build 700, WinAVR-20100110, Win7pro. Die originalen Zeilen sind rot markiert - und an die Fehlermeldungen angepasst.
Optimiert mit -0s
Optimiert mit -03 => der Code des >>gesamten Programms<< ist dabei ein vielfaches länger :-/Code:arno_01-lss-Opt_-0s Optimierung -0s arno_01.elf: file format elf32-avr // // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Izthrznt = 20000; // Der ZeitHorizont in ISR(TIMER2_COMPA_vect) 12e0: 80 e2 ldi r24, 0x20 ; 32 12e2: 9e e4 ldi r25, 0x4E ; 78 12e4: 90 93 40 04 sts 0x0440, r25 12e8: 80 93 3f 04 sts 0x043F, r24 Izeit_A = Izthrznt; // 12ec: 80 91 3f 04 lds r24, 0x043F 12f0: 90 91 40 04 lds r25, 0x0440 12f4: 90 93 33 04 sts 0x0433, r25 12f8: 80 93 32 04 sts 0x0432, r24 Isecundn = 0; // Sekundenzähler, max 9 Stunden - NUR hier nullen 12fc: 10 92 fd 03 sts 0x03FD, r1 1300: 10 92 fc 03 sts 0x03FC, r1 ** **************************************************************************** */ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // DDRD = B11111111; // PORTC = B00110000; DDRD = 0B11111111; 1304: 8f ef ldi r24, 0xFF ; 255 1306: 8a b9 out 0x0a, r24 ; 10 PORTC = 0B00110000; 1308: 80 e3 ldi r24, 0x30 ; 48 130a: 88 b9 out 0x08, r24 ; 8 while(PINC&8){} 130c: 33 99 sbic 0x06, 3 ; 6 130e: fe cf rjmp .-4 ; 0x130c <main+0xb8> // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /* **************************************************************************** ** ** **************************************************************************** */ // - - - - - - - - - - - - - - - - Svpt = 0; // Servopointer, => ~tmr~/ISR (TIMER1_COMPA_vect) 1310: 10 92 20 04 sts 0x0420, r1 TC1TMR_init ( ); // OCR1AV und ~BV in ~com~ gesetzt 1314: 0e 94 d3 01 call 0x3a6 ; 0x3a6 <TC1TMR_init> // - - - - - - - - - - - - - - - -
Code:arno_01-lss-Opt_-03 Optimierung -03 arno_01.elf: file format elf32-avr // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Izthrznt = 20000; // Der ZeitHorizont in ISR(TIMER2_COMPA_vect) b954: 80 e2 ldi r24, 0x20 ; 32 b956: 9e e4 ldi r25, 0x4E ; 78 b958: 90 93 40 04 sts 0x0440, r25 b95c: 80 93 3f 04 sts 0x043F, r24 Izeit_A = Izthrznt; // b960: 80 91 3f 04 lds r24, 0x043F b964: 90 91 40 04 lds r25, 0x0440 b968: 90 93 33 04 sts 0x0433, r25 b96c: 80 93 32 04 sts 0x0432, r24 Isecundn = 0; // Sekundenzähler, max 9 Stunden - NUR hier nullen b970: 10 92 fd 03 sts 0x03FD, r1 b974: 10 92 fc 03 sts 0x03FC, r1 ** **************************************************************************** */ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // DDRD = B11111111; // PORTC = B00110000; DDRD = 0B11111111; b978: 4a b9 out 0x0a, r20 ; 10 PORTC = 0B00110000; b97a: 80 e3 ldi r24, 0x30 ; 48 b97c: 88 b9 out 0x08, r24 ; 8 while(PINC&8){} b97e: 33 99 sbic 0x06, 3 ; 6 b980: fe cf rjmp .-4 ; 0xb97e <main+0xd0> // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /* **************************************************************************** ** ** **************************************************************************** */ // - - - - - - - - - - - - - - - - Svpt = 0; // Servopointer, => ~tmr~/ISR (TIMER1_COMPA_vect) b982: 10 92 20 04 sts 0x0420, r1 TC1TMR_init ( ); // OCR1AV und ~BV in ~com~ gesetzt b986: 0e 94 3d 01 call 0x27a ; 0x27a <TC1TMR_init> // - - - - - - - - - - - - - - - -







Zitieren
Hoffentlich liegt das Ziel auch am Weg 


Lesezeichen