Hallo Ich schreibe gerade einen zeitkritischen Teil bei WinAVR in Assembler. In diesem Teil muss ich auf einen Pointer zugreifen. Wie kann ich den Pointer in mein Pointer-Register (X,Y oder Z) laden? Der Pointer ist ja 16-Bit lang. Wie kann ich erst den Low-Teil des Pointers in beispielsweise XL und dann den High-Teil in XH laden? Im AVRStudio gibt es für solche Zwecke die LOW()- und HIGH()-Funktionen - gibt es bei WinAVR etwas ähnliches? Viele Grüsse, Steffen
Hallo nochmal
Ich habe inzwischen den Befehl
asm("st %a0,r24"::"x"(Pointer))
gefunden. Das Problem ist hier allerdings, dass der Pointer nicht nur
ins X-Register geladen wird, sondern auch gleich der "store"-Befehl
ausgeführt wird. Der "Pointer" ist jedoch in Wirklichkeit ein Array
und ich möchte zur Laufzeit auf die verschiedenen Elemente zugreifen.
Hat irgendjemand eine Idee, wie ich ein Registerpaar mit einem Pointer
in Assembler laden kann?!
Viele Grüsse,
Steffen
P.s.: Ich weiß, dass es eine Low()-Funktion bei Assembler mit WinAVR
gibt. Nur leider kann ich mich nicht mehr daran erinnern, wo ich etwas
zu diesem Thema gelesen habe :-(
Aaaahh, Erlösung:
asm(""::"x"(Pointer))
Puh, endlich die Lösung gefunden. Ist eigentlich auch nur konsequent
logisch, dass es so funktionieren muss.
Viele Grüsse,
Steffen
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.