Karl Heinz Buchegger schrieb:
> Dass du libm einbinden musst, hast du hoffentlich in der FAQ schon
> gefunden. (Punkt 2 in der FAQ)
Das hilf in den meisten Fällen; nämlich dadurch, daß Sprung-Offsets
wieder klein genug werden, um in 13 Bits zu passen.
Allerdings hülft es nicht immer, da sich in den Quellen explizite
RJMP/RCALL zu externen Modulen finden, deren Ablage nicht bekannt ist.
Werden die so lokatiert, daß der Sprung sich als zu geizig erweist, kann
der Linker nix anderes machen, als zu meckern.
Der Linker ist nicht in der Lage, kurze Sprünge zu langen zu relaxen;
dazu müsste viel mehr Logik eingebaut werden, weil sich dadurch auch
lokale Sprungoffsets ändern können und wegen des breiteren Code u.U.
nicht mehr passen und der Linker diese ebenso nachflicken müsste.
D.h. auch in
SBRC 1,2
RJMP .label
Müsste das RJMP durch ein JMP ersetzt werden, was weitere
Codevergrößerung bwirkt, usw, usw.