As you say, there are a wide variety of devices. Many have an ARM processor and might well already use GCC; others are DSPs that are programmed in assembly language, and you'd need the right assembler; the GNU assembler has support for some of the more common DSPs. But certainly there are specialized processors for which no free tools exist.