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
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.