Variablen in Register halten

Gast #74876
In C kann man variablen als register definieren.

register char temp;


Weshalb speicher der winavr compiler diese Variable trotzdem im SRAM
und macht bei jedem gebrauch ein LD und dann ein ST??

Kann man den Compieler dazu bringen diese Variable in einem Register zu
halten und nicht mehr in den speicher zu schreiben?

marc
Gast
ups, mal wieder zuschnell geklickt

es wäre in den FAQ's deiner Doku gestanden:


3. How to permanently bind a variable to a register?
This can be done with

>> register unsigned char counter asm("r3");

See C Names Used in Assembler Code for more details.
Gast
Ansonsten ist `register' ein useless keyword.  Es wird praktisch
vom Compiler komplett ignoriert, da die Optimierung komplett auf
anderen Wegen herausfindet, welche Variablen man besser in
Registern hält und welche nicht.
Gast
Danke, das sollte mich weiterbringen, den gewisse variablen sind im sram
definitv am falschen ort, vorallem sollange nicht alle register
verwendet werden.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.