Theoretically the LLMs could go straight to machine code. No need for any intermediate language. However, the HN stories have made it clear that LLMs are not great at going directly to machine code or Rust. Rust is, time and time again, is being used used as an optimization intermediary. If LLMs were better to target it directly they wouldn't be reading report after report about translating to it from another language.
Yesterday I asked Claude to make a RISCV emulator like qemu in x86 assembler. It runs about 5x slower than qemu. That's a pure interpreter vs one of the best JITs. Qemu can run many more instructions though.