A cross compiler is simply a compiler which runs on one type of platform, e.g., Windows, Linux, MAC OS X, etc, which compilers code for another platform, e.g., PIC, AVR, ARM, etc.
Therefore, most embedded compilers are in fact cross compilers, e.g., Hi-Tech, KEIL, ARM-GCC, MikroC, etc.
The term platform in this case can refer to both a specific architecture, e.g., x86, ARM Cortex-M3, PIC16F, ATmega, etc, or an OS/RTOS.
In other words, a Windows PC system can use a cross compiler to compile code for a Linux PC system, while both may utilize an x86 based processor, in this case a cross compiler is required due to the different OSs.
BigDog