I have used the CCS C compiler:
From the newsgroups, comp.arch.embedded.piclist and alt.microcontrollers.8bit this was advertised recently:
----------------------------------------------------------
HI-TECH Software is pleased to announce the release of a totally free ANSI C compiler to support selected Microchip devices. The HI-TECH PICC Lite compiler is a freeware version of our industrial-strength PICC compiler and supports the 16F877, 16F877A, 12F675, 12F629, 16F627, 16C84, 16F84 and 16F84A devices.
Differences from the full versions are: there is no source code supplied for the library routines; the compiler comes with no printf() support for longs or floats; two ram banks of the 16F627, 16F877, 16F877A are supported for general purpose ram; Code size for the 16F877 and 16F877A is limited to 2048 words.
HI-TECH Software has provided this freeware PICC Lite compiler, as a low-cost tool for hobbyists and students, however the licence allows its use for commercial purposes as well. It is ideal as a teaching tool for an introduction into the 'C' language and embedded programing, on a Microchip device. The selected processors were chosen for this compiler due to their popularity.
----------------------------------------------------------