Welche Register globalen Variablen fest zuordnen

Gast #180060
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?

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