I think you just gave me an epiphany - is that because all AVR instructions are 16-bits or 32-bits, so all instruction offsets must be even and an even binary number always has a LSB of 0?
That would explain all of the right-shifts in `binutils`. So I take it that the AVR core in its deep, dark, HDL cave, simply left shifts the offset during the execute cycle? That way we save a bit in the instruction encoding that was always going to be the same? On Thu, Feb 19, 2015 at 3:59 PM, Jeff Barlow <j...@wb6csv.net> wrote: > On 02/18/2015 06:11 PM, Dylan McKay wrote: > >> >> This relocation is solely for the relative `jmp` and `call` instructions >> (if I'm not mistaken). >> >> Both of these instructions have exactly 12 bits for their target >> address. Why is the relocation 13 bits then? >> > > The resulting LSB of of those relocations is always zero, of course. The > 12 bits in the instructions are bits 1 - 12. With the assumed zero LSB > that's 13 bits total. > > -- > Later, > Jeff > > _______________________________________________ > AVR-GCC-list mailing list > AVR-GCC-list@nongnu.org > https://lists.nongnu.org/mailman/listinfo/avr-gcc-list >
_______________________________________________ AVR-GCC-list mailing list AVR-GCC-list@nongnu.org https://lists.nongnu.org/mailman/listinfo/avr-gcc-list