GCC-Befehl für ...

Gast #494288
Lesenswert?

In "C" kann man nicht gezielt auf bestimmte Arbeitsregister schreiben.
Nur auf IO-Register, die in einem .H definiert sind.

Die internen uP Arbeitsregister ordnet der Compiler selbst zu.

Wenn man Variable definiert, kann man damit "rechnen".
Sind dies lokale Variable in einer Funktion, so werden die automatisch 
irgendwelchen Arbeitsregistern zugeordnet, belegen also kein Ram.
Sind es mehr lokale Variablen als "Arbeitsregister", welche dieser uP 
hat, so werden dann vom C-Compiler automatisch Ramwerte des Stacks 
eingesetzt.

Hängt auch mit Optimierungslevel zusammen.

Werte, die man "behalten" will, werden entweder durch eine Funktion 
zurückgegeben oder müssen auf einer globalen Variablen abgespeichert 
werden.

Gast #494337
Lesenswert?

Und welchen Sinn sollte ein asm("ldi r16,0x08") haben? Wenn der TP ein 
Variable in einem Register haben möchte, dann kann er den 
"register"-Modifier benutzen.

z.B.   register uint8_t var = 0x08;

Der Sinn erschließt sich mir trotzdem nicht.

mfg, Stefan.
Gast #496201
Lesenswert?

nun der sinn wäre nun bei mir eine zählvariable, die ihren wert aus dem 
register 16 ( in diesem fall) bezieht.

aber ich habe es (siehe anderer Beitrag von mir) auch ohne das explizite 
BEschreiben eines Arbeitsregisters geschafft.

danke! :)

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