SDCC is a retargettable, optimizing ANSI C compiler that targets the Intel 8051, Maxim 80DS390, Zilog Z80 and the Motorola 68HC08 based MCUs. Work is in progress on supporting the Microchip PIC16 and PIC18 series. This requires gc (well, it's actually optional, but the build script enables it by default - if that's not what you want, then remove "--enable-libgc")