Georg-Johann Lay wrote:
We only have multilib granularity, and there are not so many features
that are related to the flash size. One is __AVR_HAVE_JMP_CALL__ which
applies to devices with >= 16 KiB flash. The next size milestone is
__AVR_HAVE_ELPM__ which means >= 128 KiB. The JMP + CALL looks
reasonable to me; I used it for 64-bit divisions in libgcc (which leads
to the funny situation that 64-bit division might run faster than a
32-bit division for the same values).
Interesting suggestion. I could just use the multiplierless base-100 code,
which is smaller and still reasonably fast.
And thank you very much! I knew that HAVE_JUMP_CALL meant that RJMP/RCALL
range wasn't enough, which means more than 12 bits of PC (2^13 bytes of
flash), but it had gotten lost in the forest of confusion.
I'm befuddled by all of the different architecture options and don't
understand the difference between most of them. I've been slowly
downloading data sheets for different examples from gcc's list and
looking for differences, but it's a laborious process. (That document
on avr-tiny started out with me documenting my realization that avr1
was something else.)
For example, does MUL support imply MOVW support? (I've been assuming
so, but that's an easy edit.)