Gast
#2431361
Hi, Ich will rjmp so nutzen, daß ich nicht unnötige Sprungmarken festlegen muss, das ganze, nicht aus Faulheit(aus einem anderen Betrachtungswinkel vieleicht schon ;) ), sondern als eine Art inline Funktion(per #define), und da würden die Sprungmarken stören weil durch Wiederverwendung der Funktion mehrere gleichnamige Sprungmarken angelegt würden. Da ich aus dem Avr Instructionset entnommen habe, das rjmp k == PC+k+1 ist, und ich erreichen will der PC um zwei Einheiten zurückgestellt werden soll, habe ich mir folgendes gedacht: rjmp -3 Nun kommt der Compiler mit folgendem Fehler: Error: odd address operand: -41 Nur aus Interesse habe ich einfach weitere Konstanten eingegeben mit sehr merkwürdigen Ergebnissen, die nach meiner Meinung keinen Zusammenhang ergeben. So dann also z.B. rjmp -2 ergibt(da der Compiler es merkwürdigerweise annimmt) im Disassembler: 63: rjmp -2 +000005F9: CFEB RJMP PC-0x0014 Relative jump Kann sich das einer(oder mir) erklären? Ich danke schon mal... Gruß Philipp