- SF800 Solar Speicher Tutorial         
Ergebnis 1 bis 10 von 15

Thema: Optimierung Arduino-IDE - Assembler

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #6
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.694
    .. 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? ..
    Da stelln wa uns ma jaantz domm.

    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
    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>
    // - - - - - - - - - - - - - - - -
    Optimiert mit -03 => der Code des >>gesamten Programms<< ist dabei ein vielfaches länger :-/
    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>
    // - - - - - - - - - - - - - - - -
    Geändert von oberallgeier (03.10.2018 um 13:44 Uhr) Grund: Korrektur: Win7pro
    Ciao sagt der JoeamBerg

Ähnliche Themen

  1. PROGMEM und Optimierung
    Von Ceos im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 09.10.2013, 07:15
  2. Optimierung von Funktion
    Von shedepe im Forum C - Programmierung (GCC u.a.)
    Antworten: 7
    Letzter Beitrag: 05.11.2010, 16:32
  3. Code Optimierung
    Von Siro im Forum C - Programmierung (GCC u.a.)
    Antworten: 10
    Letzter Beitrag: 19.08.2010, 22:45
  4. Zusammenbau Optimierung (Spule)
    Von Ichiban im Forum Asuro
    Antworten: 9
    Letzter Beitrag: 11.12.2008, 19:11
  5. Optimierung von Verfahrwegen
    Von N8Surfer im Forum Software, Algorithmen und KI
    Antworten: 1
    Letzter Beitrag: 16.01.2007, 11:32

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress