I am not familiar with the AVR, 68hc11, and IP2022. The H8 family is a mixed
8/16 bit part. It has 8 16-bit registers, and thus isn't too bad as a gcc
target. Looking at the 68hc11 port, I see that it has some 16-bit registers,
so it doesn't look like an 8-bit microcontroller to me, it looks like a
mixed 8/16 bit part. Maybe we need a definition of what exactly an 8-bit
microcontroller is?
I'd argue that an 8-bit micro is one for which the normal register width
is 8 bits. The AVR has a few 16-bit registers (pointers) but each of
these is actually two 8-bit registers combined together (much like H &
L, B & C or D & E were on things like 8080s) - almost all of the AVRs
instructions perform 8-bit operations. A lot of people write AVR code
using avr-gcc because it's pretty much as good as many of the commercial
compilers (I wrote a pretty complete RTOS and TCP/IP stack using it a
few years ago).While it is certainly possible to emit code for some 8-bit microcontrollers,
I'd argue that it isn't worth the trouble. The quality of code you get is
so bad that you would be better off writing in assembly language. Also, you
have to take so many liberties with the C standard that you really aren't
writing C code anymore.
Actually we've got to the stage now where we're actually going the other
way - hand crafted assembler routines have been discarded because
ip2k-gcc actually does a better job overall using C code (it never tires
of spotting common subexpressions that even really good assembler
programmers often miss and it tends to spot reuse opportunities at
greater distances).