Forum: Compiler & IDEs GCC-Befehl für ...


von Johannes (Gast)


Lesenswert?

Hallo liebe leute

wie lautet im GCC der Befehl für

ldi r16,0x08

?

Möchte einfach ein Arbeitsregister mit einem bestimmten Wert schreiben.

Danke!

von Klaus (Gast)


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.


von Christian G. (Gast)


Lesenswert?


von Stefan M. (Gast)


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.

von johannes (Gast)


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! :)

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.