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