Underlying the front-end parsers is a symbolic instructionset – a kind of portable assembly code – which can be translated to any of the supported machine architectures.
I bet a lot of people continued to write machine language until the processor, like a bartender eager to close up and go home, finally kicked them out by switching to a RISC instructionset.