Compilers don’t output assembly or machine code directly because it just gets too complex to cope with all the different processors out there. Instead they output an intermediate language (Zend, C etc) and then let the local C compiler turn it into the specific code for that processor. Java with it’s JIT compiler (just in time) is slightly different in that it compiles into an intermediate language which is interpreted but chunks of that code can then be properly compiled if those bits need to run faster.
There’s also another lower layer called microcode which controls how the processor runs the machine code. There was recently an Intel release of new microcode to protect us against MDS vulnerabilities.
I tried rewriting this a few times to make it understandable. I suspect I failed
Sorry. No data so far.