Stephen said:
I am not a professional and don't know much, but I am curious.
Good.
I assume this is only because there have been C compilers written for these
and the "many more."
Halfway true. The other half is that the ISO standard exists to
guarantee the behavior of C programs compiled with a conformant compiler
/regardless/ of what machine the program is compiled on or for. This
standard dictates a certain group of behaviors programmers can rely
upon, whether they are writing new programs or compiling a pre-written
program for a new machine.
When a chip company designs a new processor, is a C compiler usually
provided for programmers by the company? What about other languages? Who
is "normally" responsible for these things?
The chipmaker might design a compiler for their chips, as Intel has, but
they don't always. The group "normally" responsible for these things is
whoever wants a C compiler for that machine.
The GNU Project has done a good job of porting their gcc (GNU Compiler
Collection) compiler suite to different architectures, and as the gcc
suite can act as a conformant C compiler (up to the C89 standard, I
believe), any machine for which a version of gcc exists has a conformant
C compiler.
In any case, it isn't difficult to create a compiler for a new machine
if you already have a compiler for an existing machine you can examine
the source code of. Especially if that compiler has a modular design, as
gcc does, with a language-specific front-end (which emits RTL (Register
Transfer Language)) and a machine-specific backend (which emits assembly
language). Then the problem is reduced to writing a backend.