WinAVR: Low()-Funktion in Assembler?

Gast #173646
Lesenswert?
• ▲
▼
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
Gast #173647
Lesenswert?
• ▲
▼
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 :-(

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