With regard to LLVM, the concept of emitting code for a &quot;virtual machine&quot; that is then translated to code for any of several target machines is ancient.
One example is the Pascal-P environment from the 1970s. The compiler emitted &quot;P-code&quot; that was then translated to machine language. Oddly enough, P-code was so close to the machine language of the PDP-11 that the translator was trivial!