Hallo, es gibt ja die Pointer-Register(beim ATMega32 zumindest X, Y und Z). Kann man sich solche Pointer selber definieren? Ich meine das so, das ich bspw. die Register R20 und R21 hernehme und daraus ein Pointer erstelle. Die Funktionalität sollte dann so sein wie bei standardmäßigen Pointern, sprich wenn das Low-Register nach einer Erhöhung "überläuft", dass dann automatisch das High-Register erhöht wird. Danke für jeden Tipp. -- Gruß Scotty
Karsten Sosna schrieb: > es gibt ja die Pointer-Register(beim ATMega32 zumindest X, Y und Z). > Kann man sich solche Pointer selber definieren? Nein > Ich meine das so, das > ich bspw. die Register R20 und R21 hernehme und daraus ein Pointer > erstelle. Die Funktionalität sollte dann so sein wie bei standardmäßigen > Pointern, sprich wenn das Low-Register nach einer Erhöhung "überläuft", > dass dann automatisch das High-Register erhöht wird. Du kannst dir natürlich ein Makro bauen, welches das erledigt. Ist ja auch nicht weiter tragisch zu realisieren, zumal ja der AVR Assembler die Instruktion ADIW für kleine Konstanten zur Verfügung stellt. Allerdings: den wesentlichen Vorteil der Pointer Variablen, indirekte Zugriffe realisieren zu können, kriegt man damit nicht.
> Allerdings: den wesentlichen Vorteil der Pointer Variablen, indirekte > Zugriffe realisieren zu können, kriegt man damit nicht. Hallo Karl Heinz, das habe ich mir schon fast gedacht. Na dann muss ich das anders realisieren, mir fehlt nämlich genau ein Pointer. Da muss ich halt ein paar mal mehr pushen und popen. -- Gruß Scotty
Hi Ich kenn zwar deinen Code nicht, aber schau mal nach, ob du nicht fehlende Adressregister damit erschlagen kannst, indem du einen Offset benutzt..
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
So kommst du für eine Kopierfunktion mit nur einem Adressregister aus.... Gruß oldmax
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.