>>1
If you don't have a compiler you can write one in assembler. If you don't have an assembler, you write an assembler in assembler and then translate it into machine code by hand. Early languages were simple enough to parse and compile that it wasn't a huge problem to write them in assembler, though the code they generated was fairly large and slow. When developing a new (not backwards compatible) architecture, such as Itanium or PowerPC, one of the first things they'd do is cross compile a compiler that could run on the new architecture.
This is just a specific case of "bootstrapping" a compiler. Normally you'd write a C compiler in C. But if you don't have a C compiler, then you write one in assembler -- but it only has to be good enough to compile the C compiler. It's basically a throw-away compiler.