Variablen in Register halten

Gast #74876
Lesenswert?

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 #74878
Lesenswert?

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 #74879
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren