Forum: Compiler & IDEs Variablen in Register halten


von Marc Robert (Gast)


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

von Michael Schlagmüller (Gast)


Lesenswert?

suchst du das immernoch ?

von Michael Schlagmüller (Gast)


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.

von Joerg Wunsch (Gast)


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.

von Marc Robert (Gast)


Lesenswert?

Danke, das sollte mich weiterbringen, den gewisse variablen sind im sram
definitv am falschen ort, vorallem sollange nicht alle register
verwendet werden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.