- LiFePO4 Speicher Test         
Ergebnis 1 bis 4 von 4

Thema: Compiler-Optimierung bei Register-Variablen

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    25.10.2005
    Alter
    71
    Beiträge
    157

    Compiler-Optimierung bei Register-Variablen

    Hallo, ich bin am verzweifeln!

    Google und auch die Suche hier im Forum hat mir nicht weiter geholfen. Ich möchte Variablen in einem Register ablegen. Leider optimiert der Compiler die Zugriffe auf die Variable komplett weg.

    Hier das auf das Minimum reduzierte Testprogramm (Optimierungseinstellung -Os, wie bei µC-Programme üblich):

    Code:
    register unsigned char Data asm("r6");
    
    int main(void)
    { while(1)  
      { Data++;  
      }
    }
    führt zu Assembler-Code:
    Code:
    int main(void)
    { while(1)
    30: ff cf    rjmp .-2 ; 0x30 <main>
    Deklariere ich "Data" als
    Code:
    volatile unsigned char Data;
    erhalte ich das erwartete Ergebnis (Assembler):
    Code:
    int main(void)
    { while(1)
      { Data++;  
    40: 80 91 60 00   lds   r24, 0x0060  
    44: 8f 5f         subi  r24, 0xFF  ; 255
    46: 80 93 60 00   sts   0x0060, r24  
    44: fa cf         rjmp  .-12       ; 0x40 <main>
    Wenn man bei der Register-Deklaration ein "volatile" hinzufügt, ändert sich außer einer zusätzlichen Compiler-Warnung nichts.

    Benutzen möchte ich solch einen Code in einem Projekt, bei dem eine in Assembler geschriebene ISR einen Wert in einem Register ablegt. Die Speicherzugriffe möchte ich mir deshalb -besonders in der ISR- ersparen.

    Ich benutze das Atmel-Studio in der Version 6.1. Das komplette Projekt habe ich als Datei angefügt.

    Wie kann ich den Compiler dazu überreden, den Registerinhalt zu ändern?

    Viele Grüße RedBaron
    Angehängte Dateien Angehängte Dateien

Ähnliche Themen

  1. gleiche register bei atmega32 und 16
    Von avrrobot im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 20.02.2011, 10:19
  2. Hilfe bei Optimierung von Ports setzen
    Von graffiti im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 06.07.2008, 22:25
  3. benötige Hilfe bei Register
    Von Hansi41 im Forum Asuro
    Antworten: 5
    Letzter Beitrag: 19.01.2008, 14:33
  4. 2 verschiedene Variablen greifen auf das selbe Register zu
    Von Hepta im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 10.09.2007, 16:39
  5. Gefahren bei schreiben ins Register TIMSK?
    Von fambi_mail im Forum AVR Hardwarethemen
    Antworten: 4
    Letzter Beitrag: 28.02.2006, 14:36

Berechtigungen

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

Solar Speicher und Akkus Tests