Possible Duplicate:
Bootstrapping a language
Compilers are themselves written in high level languages. Then how does the computer understand the compilers? They convert the HLLs into machine level codes, but how are they themselves understood by the computer?
One compiler was written in machine code. The rest can just use it or other already compiled compiler (including future versions of itself, that can use the already existing version to recompile the new version.)
P.S. Note that most compilers do NOT compile the “high level code” into a machine code, they have 2 components, front-end and back-end. The front-end compiles the code to an intermediate middle language, and the back-end compiles the middle language to machine code.
This ensures that if you have
nlanguages andmarchitectures, you only needn+mcomponents and notn*mif you had a compiler per language/machine