Forum: Compiler & IDEs direkter Zugriff auf Register


von Julian E. (redseven5)


Lesenswert?

Hallo,
ich habe ein C Programm mit eingebundenen Assembler Dateien geschrieben. 
Eine Interruptroutine ist in Assembler verfasst. Diese änder den Wert im 
Register R18. Nun möchte ich in meinem Hauptprogramm (in C) dieses 
Register auslesen und an eine andere Funktion übergeben.
Doch wie kann ich in C direkt auf das Register zugreifen?
Vielen Dank.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

r18 ist unpraktisch, da es zu den Arbeitsregistern des Compilers
gehört.

Du musst ein Register fest an eine Variable binden, wie das geht, steht
hier:

http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_regbind

(Ich gehe mal von AVR-GCC aus.)

Sinnvollerweise benutzt man dafür Register ab r2 aufsteigend, das
ergibt die geringste Kollisionswahrscheinlichkeit mit der normalen
Compilernutzung.

von Julian E. (redseven5)


Lesenswert?

Dankeschön!
Ich hatte die FAQs schon überflogen und ich hab heute auch noch gesehen, 
dass es im AVR-GCC Tutorial ähnlich erklärt wird.
Ich hätte wohl nicht gleich einen Beitrag dazu schreiben sollen sondern 
erst denken ...

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
Noch kein Account? Hier anmelden.