Gast
#1685837
Moin, und schon gehts los: Kann ich beim WinAVR Assembler ein "relatives" Label setzen. Zur erklärung der folgende Code: [avrasm] .macro SaveContext push 30 push 31 ldi 30, lo8(SaveContext_Exit) ldi 31, hi8(SaveContext_Exit) rjmp _SaveContext SaveContext_Exit: .endm .macro RestoreContext ldi 30, lo8(RestoreContext_Exit) ldi 31, hi8(RestoreContext_Exit) rjmp _RestoreContext RestoreContext_Exit: pop 31 pop 30 .endm _SaveContext: push 0 ...... usw. push 28 push 29 in work0,_SFR_IO_ADDR(SREG) push work0 ijmp _RestoreContext: pop work0 out _SFR_IO_ADDR(SREG),work0 pop 29 pop 28 ........ usw. pop 0 ijmp [\avrasm] Die beiden Makros werden jeweils in verschiedenen Funktionen zum sichern/ und wiederherstellen der Register aufgerufen. Um den Flash etwas zu schonen wird in den Beiden Makros zur passenden _Funktion gesprungen. Die Rücksprungadresse liegt im Z-Register. Wenn ich jetzt aber die Makros in belibige Fuktionen schreibe wird sicherlich Fehler beim Compelieren geben da das Label nun mehrmals definiert ist. Kann man die Label irgendwie relativ zum Makro definieren?? Danke für Antworten