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.