www.mikrocontroller.net

Forum: Compiler & IDEs Welche Register globalen Variablen fest zuordnen


Autor: Malte (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
für eine möglichst schnelle Interrupt Routine (AVR, GCC) möchte ich
globale Variablen dauerhaft in Registern halten. Da dies nach meiner
Überlegung pro Byte Variable jeweils ein PUSH,POP,LDS,STS sparen würde
was wiederum 8 Taktzyklen wären.
Wenn ich meine Variablen von
uint8_t volatile rsync;
durch
register uint8_t rsync asm("r2");
ersetze, so wird die Codegröße des Interrupts auch deutlich kleiner.
Allerdings wurde ich aus der avr-libc Doku nicht schlau, welche Regiser
ich auf diese Weise "besetzten" darf ohne das es zu Problemen kommt.
Die FAQ scheint sich da eher auf die Verwendung von Registern in Inline
Assembler zu beschränken. Ideal wäre es wenn ich bis zu 14 Register wie
oben beschieben belegen könnte.
Also welche Register darf ich für globale Variablen belegen?

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann dir wohl keiner genau sagen. ;-)

Vermutlich sind r2...r15 tatsächlich geeignet.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt leider keine Möglichkeit, dem Compiler zu sagen, daß Du Register

exklusiv verwenden willst.

Du mußt also im *.LST-File überprüfen, ob Deine Register wirklich nur
an den Stellen verwendet werden, die Du vorgesehen hast.


Peter

Autor: Malte (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK :-|
Trotzdem Danke

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.